【问题标题】:Handling alert appears in a popup window using selenium webdriver使用 selenium webdriver 处理警报出现在弹出窗口中
【发布时间】:2017-05-11 22:35:07
【问题描述】:

场景如下:

打开一个页面 --> 这个页面创建另一个窗口 新窗口 --> 显示警报

现在我有两个窗口句柄,第二个窗口被警报消息冻结。

我使用了代码:

WebDriverWait(driver, 2).until(EC.alert_is_present(),
                                       'Timed out waiting for PA creation ' +
                                       'confirmation popup to appear.')

我的问题是赶上警报驱动程序是否需要切换到显示警报的新窗口? 或者无论当前的窗口处理程序如何,都可以使用driver.switch_to.alert 捕获警报。

测试页面在这里:http://alertonpopwindow.bitballoon.com/

谢谢, 医学博士。

【问题讨论】:

  • 你应该切换到调用alert()函数的窗口
  • 如果我打开了几个窗口,我不知道哪个窗口叫警报?

标签: python selenium selenium-webdriver popup webdriver


【解决方案1】:

如果不知道alert()是哪个窗口,可以试试

from selenium.common.exceptions import NoAlertPresentException

for window in driver.window_handles:
    driver.switch_to.window(window)
    try:
        driver.switch_to.alert.accept()
        break
    except NoAlertPresentException:
        pass

【讨论】:

  • 在我从 driver.switch_to.alert 中删除函数括号后代码工作。但是,我仍然无法接受或解除警报!非常感谢。
  • 哦...是的,它不可调用:) 如果它有助于解决您的问题,请将此答案标记为Accepted
  • 关闭或接受警报? driver.accept()?
  • driver.switch_to.alert.accept() 关闭警报。 dismiss() 用于confirm() 弹出窗口- 可以选择的弹出窗口类型,例如,Ok (accept()) 或 Cancel (dismiss()) 按钮
  • 终于!!!这有效 Alert(driver).accept() 谢谢你的帮助。
最近更新 更多