我正在尝试测试我正在开发的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] 举报,一经查实,本站将立刻删除。