我们正在使用以下内容制作自动化脚本:
当导航到特定页面时,我们将执行以下代码:
browser = context.browser
selector_button_checkout = "//*[@id='cart']//div[contains(@class, 'button button-3 localizejs') and text()='CHECKOUT']"
with browser.get_iframe(0) as iframe:
assert iframe.is_element_present_by_xpath(selector_button_checkout, wait_time=30)
我们收到此错误:
packages/selenium/webdriver/remote/errorhandler.py", line 237, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.UnexpectedAlertPresentException: Alert Text: None
Message:
Exception UnexpectedAlertPresentException: Alert Text: None
Message:
Traceback (most recent call last):
selenium.common.exceptions.UnexpectedAlertPresentException: Alert Text: None
Message:
实际上,网络上没有显示任何警报或提示,但无论如何我们尝试使用此处提供的 Splinter 文档来处理它http://splinter.readthedocs.io/en/latest/iframes-and-alerts.html
我们得到了另一个异常,即
NoAlertPresentException
,所以我们迷路了。
有什么想法吗?
这可能会有所帮助:如何在 Selenium 中处理具有“UnexpectedAlertBehaviour”功能的警报?
对于我们来说,我们使用 FacebookWebDriver 进行 Codeception,有时当您尝试单击或访问不存在或不可见的成员时,它会失败并出现上述错误。
因此,转到问题页面并检查该元素(css 或 xpath)是否可见、可点击等。您可以使用浏览器控制台,$() 用于查询路径,$x() 用于 xpath。
我刚刚在使用 Selenium 时遇到了类似的问题。当尝试离开当前正在处理的页面而不需要保存时,可能会发生这种情况的原因之一。 Selenium 无法处理额外的对话。
附加对话的一个示例是,当您正在键入帖子时,您尝试导航到其他页面而不保存或发布您正在键入的帖子。在这种情况下,导航代码会被执行,但您实际上并没有离开页面。
如果有需要单击的按钮,请确保在尝试离开页面之前单击它。当有附加对话时,请勿尝试强制关闭页面,因为强制停止将导致您下次尝试获取“驱动程序”的新实例时失败。