首页 > 解决方案 > 带有两个连续警报的 Selenium webdriver

问题描述

我正在尝试使用此代码测试具有两个不同警报的网页:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

alert = driver.switch_to.alert
alert.accept()
WebDriverWait(driver, 3) \
    .until(EC.alert_is_present(),
           'Timed out waiting for error alert to appear.')
error_alert = driver.switch_to.alert

这适用于 Selenium 3.4.3,但在升级到 3.14.1 后,它会WebDriverWait在线给出以下错误:

E       selenium.common.exceptions.TimeoutException: Message: Timed out waiting for error alert to appear.

当我在这一行设置断点时,我用自己的两只眼睛清楚地看到了 Mozilla 中预期的警报。(我正在使用 geckdriver 运行测试。)

关于我可以做些什么来解决这个问题的任何建议?

标签: pythonseleniumselenium-webdriver

解决方案


如果警报立即出现,一个接一个,如下所示:

alert('foo');
alert('bar');

...并且您可以控制服务器端 JavaScript 代码,您应该将它们分开,例如:

alert('foo');
setTimeout(function(){alert('bar');}, 500);

这样,WebDriver 将能够区分这些警报框。


推荐阅读