【发布时间】:2013-09-30 22:22:03
【问题描述】:
我正在尝试用 python 语言为管理用户的网页编写一个带有 selenium 的测试。在此页面中,有人可以为用户添加角色,如果在添加角色时存在角色,则会发出警报。我不知道警报是 javascript 警报还是网页的元素。我想自动检查警报的存在,因为检查列表中的角色会浪费时间并且负载很大。我试过这个:
browser = webdriver.Firefox()
browser.get("url")
browser.find_the_element_by_id("add_button").click()
try:
alert = browser.switch_to_alert()
alert.accept()
print "alert accepted"
except:
print "no alert"
但它不起作用,我得到了“UnexpectedAlertPresentException”。 我也试过这个:
browser = webdriver.Firefox()
browser.get("url")
browser.find_the_element_by_id("add_button").click()
s = set(browser.window_handles)
s.remove(browser.current_window_handle)
browser.switch_to_window(s.pop())
但我遇到了同样的例外。 此外,我尝试使用 firebug 访问警报以检查是否可以访问其属性,但右键单击被禁用。 我很快就需要一个解决方案,即使是其他语言。无论如何,我可以理解这种方法。 我将不胜感激。
【问题讨论】:
-
您是否尝试过在点击和 switch_to_alert 之间有短暂的延迟?
-
还没有,谢谢@Richard 的这个建议。我想我可以使用 A.R. 的代码。给了我
-
@Richard 在
switch_to_alert()到accept()之间一定有延迟吗?否则可能会有问题,你认为? -
@begueradj,我认为@Richard 的意思是我应该在元素上的
click()和switch_to_alert()之间放置一个延迟。 -
把它关掉 :D self.execute_script('window.alert = function(){};')
标签: python selenium testing alert window-handles