所以我想点击这个按钮,如果是你第一次点击它。将出现一个javascript警告弹出窗口。我一直在使用firebug而且无法找到javascript的位置并且我已经尝试了
if EC.alert_is_present:
driver.switch_to_alert().accept()
else:
print("no alert")
如果有警告框,则上述代码有效,但如果没有则会抛出错误。即使有其他声明我甚至尝试过
if EC.alert_is_present:
driver.switch_to_alert().accept()
elif not EC.alert_is_present:
print("no alert")
它抛出了我的错误
selenium.common.exceptions.NoAlertPresentException: Message: No alert is present
我们如何解决这个问题?
答案 0 :(得分:8)
使用try catch,如果没有Alert,则捕获NoAlertPresentException
例外:
from selenium.common.exceptions import NoAlertPresentException
try:
driver.switch_to_alert().accept()
except NoAlertPresentException as e:
print("no alert")
答案 1 :(得分:4)
您就是这样做的:
from selenium.common.exceptions import NoAlertPresentException
try:
context.driver.switch_to.alert.accept()
except NoAlertPresentException:
pass
如果您愿意,可以使用pass
声明替换print
。请注意使用switch_to.alert
而不是switch_to_alert()
。后者已被弃用了一段时间。在我在这里的Selenium版本中,我在其代码中看到了这一点:
warnings.warn("use driver.switch_to.alert instead", DeprecationWarning)