我正在尝试用以下代码测试具有两个不同警报的网页:
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运行测试。)
关于如何解决此问题的任何建议?
答案 0 :(得分:0)
如果警报立即出现,一个接一个,如下所示:
alert('foo');
alert('bar');
...并且您可以控制服务器端 JavaScript 代码,您应该将它们分开,例如这样:
alert('foo');
setTimeout(function(){alert('bar');}, 500);
这样 WebDriver 将能够区分这些警告框。