gpt4 book ai didi

python - 网络驱动程序错误 : "No alert is present" after UnexpectedAlertPresentException is thrown

转载 作者:太空狗 更新时间:2023-10-29 17:49:58 24 4
gpt4 key购买 nike

我正在尝试测试我正在开发的网络应用程序。我正在使用针对 Firefox 22.0 的 Firefox 驱动程序。

有时,可能会弹出一个模式对话框(一个 Javascript prompt())。如果是这样,我想输入一些文本然后将其关闭(单击“确定”)。

相关代码如下:

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 是否与抛出并导致首先执行 except block 的 UnexpectedAlertPresentException 相矛盾?

编辑:此外,我一辈子都找不到关于 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' 

在线 alert.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
}

关于python - 网络驱动程序错误 : "No alert is present" after UnexpectedAlertPresentException is thrown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17576148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com