微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – Webdriver错误:抛出UnexpectedAlertPresentException后出现“没有警报”

我正在尝试测试我正在开发的webapp.我正在使用针对Firefox 22.0的Firefox驱动程序.

有一次,可能会弹出一个模态对话框(一个Javascript提示符()).如果是,我想输入一些文本,然后将其关闭(单击确定).

这是相关的代码

try:
    if button.text == "Run":
        button.click()
except UnexpecteDalertPresentException:
    alert = self.driver.switch_to_alert()
    print alert.text
    alert.send_keys('8080')
    alert.dismiss()

抛出UnexpecteDalertPresentException.但是,一旦它尝试执行print alert.text,我得到:

`NoAlertPresentException: Message: u'No alert is present'`.

如果我删除了print语句,它会在alert.send_keys中爆炸:

`WebDriverException: Message: u'fxdriver.modals.find_(...) is null'`

我不明白.根据定义,NoAlertPresentException是否与抛出的UnexpecteDalertPresentException相矛盾并导致except块首先被执行?

编辑:另外,我不能为我的生活找到关于http://selenium.googlecode.com/svn/trunk/docs/api/py/index.html#documentation中UnexpecteDalertPresentException的任何文档

编辑2:这就是我现在拥有的:

try:
    if button.text == "Run":
        button.click()

        alert = self.driver.switch_to_alert()

        alert.send_keys('1111')
        alert.dismiss()

 except NoAlertPresentException:
     pass

但是,我仍然看到这个:

WebDriverException: Message: u'fxdriver.modals.find_(...) is null' 

在线警报.send_keys(‘8080’).我想我不明白为什么如果没有警报,switch_to_alert()不会抛出NoAlertPresent …这就是我假设WebDriverException指示的内容.

解决方法:

我认为Selenium会关闭意外警报.显然你可以改变firefox驱动程序处理意外警报的方式:
How to handle an Alert with “UnexpectedAlertBehaviour” capability in Selenium?

作为替代方案,您可以在执行之前检查是否存在警报(毕竟,如果您想要处理警报,这并非意外),如此(Java):

try {
  Alert alert = _driver.switchTo().alert();
  //do stuff with alert
} catch (final NoAlertPresentException e) {
  //do non-alert stuff
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐