Python Webdriver 如何处理浏览器弹出窗口。这不是 JavaScript 生成的警报
Python Webdriver how to handle a browser pop up. It is not an alert generated by JavaScript
我在执行 Python Webdriver 脚本时遇到了一个弹出窗口。
场景:用户可以从管理页面单击添加项目按钮并输入项目名称,然后单击保存。
如果该项目已经存在,则会显示一个弹出窗口,说明同名项目已经存在。
我想关闭这个弹出窗口。我已经检查了 HTML 并且没有单击 Java 脚本函数来调用警报。这不是 Java 脚本警报。
它是 GWT 在浏览器中生成的弹出窗口。
开发人员使用 GWT 开发 UI.
HTML是:
<div class="gwt-PopupPanel" style="visibility: visible; overflow: visible; position: absolute; left: 687px; top: 170px;">
<div class="popupContent">
<div class="GAT4PNUJO" style="position: relative;">
<div style="position: absolute; z-index: -32767; top: -20ex; width: 10em; height: 10ex; visibility: hidden;" aria-hidden="true"/>
<div style="position: absolute; overflow: hidden; left: 0px; top: 0px; right: 0px; bottom: 0px;">
<div style="position: absolute; left: 0px; top: 0px; right: 0px; bottom: 0px;">
<div class="GAT4PNUPO GAT4PNUNO">
<div class="gwt-Label GAT4PNUOO">Add Project</div>
</div>
<div class="GAT4PNUMO">
<div class="gwt-HTML GAT4PNUIO GAT4PNUKO">An engine message has been returned. Original message: There is already a scv project with name 'test001'</div>
<div class="GAT4PNUHO GAT4PNULO">
</div>
</div>
</div>
</div>
有什么方法可以检查弹出窗口是否显示,然后在 Python Webdriver 中单击它?
我在另一篇文章中读到 post 有人提到要使用 Robot。我认为那只是 Java。
我试过了
alert = self.driver.switch_to_alert()
alert.accept()
只是为了检查并证明它不是 Java脚本警报。显示的错误是
NoAlertPresentException: Message: No alert is active
我在尝试离开页面时遇到了同样的情况,弹出窗口询问我是否确定要离开页面。我用FF设置解决了它:
webdriver.DesiredCapabilities.FIREFOX["unexpectedAlertBehaviour"] = "accept"
然后我捕捉到异常并做我想做的事,即离开网站。我希望这对你也有用。您必须捕获异常,因为它仍然会导致异常出现并停止您的代码。
我现在已经设法解决了这个问题。我使用了以下代码:
self.driver.find_element_by_xpath("//*[text()='OK']").click()
在 IE 中单击“确定”按钮,弹出窗口关闭。
我在执行 Python Webdriver 脚本时遇到了一个弹出窗口。 场景:用户可以从管理页面单击添加项目按钮并输入项目名称,然后单击保存。 如果该项目已经存在,则会显示一个弹出窗口,说明同名项目已经存在。
我想关闭这个弹出窗口。我已经检查了 HTML 并且没有单击 Java 脚本函数来调用警报。这不是 Java 脚本警报。
它是 GWT 在浏览器中生成的弹出窗口。
开发人员使用 GWT 开发 UI.
HTML是:
<div class="gwt-PopupPanel" style="visibility: visible; overflow: visible; position: absolute; left: 687px; top: 170px;">
<div class="popupContent">
<div class="GAT4PNUJO" style="position: relative;">
<div style="position: absolute; z-index: -32767; top: -20ex; width: 10em; height: 10ex; visibility: hidden;" aria-hidden="true"/>
<div style="position: absolute; overflow: hidden; left: 0px; top: 0px; right: 0px; bottom: 0px;">
<div style="position: absolute; left: 0px; top: 0px; right: 0px; bottom: 0px;">
<div class="GAT4PNUPO GAT4PNUNO">
<div class="gwt-Label GAT4PNUOO">Add Project</div>
</div>
<div class="GAT4PNUMO">
<div class="gwt-HTML GAT4PNUIO GAT4PNUKO">An engine message has been returned. Original message: There is already a scv project with name 'test001'</div>
<div class="GAT4PNUHO GAT4PNULO">
</div>
</div>
</div>
</div>
有什么方法可以检查弹出窗口是否显示,然后在 Python Webdriver 中单击它?
我在另一篇文章中读到 post 有人提到要使用 Robot。我认为那只是 Java。
我试过了
alert = self.driver.switch_to_alert()
alert.accept()
只是为了检查并证明它不是 Java脚本警报。显示的错误是
NoAlertPresentException: Message: No alert is active
我在尝试离开页面时遇到了同样的情况,弹出窗口询问我是否确定要离开页面。我用FF设置解决了它:
webdriver.DesiredCapabilities.FIREFOX["unexpectedAlertBehaviour"] = "accept"
然后我捕捉到异常并做我想做的事,即离开网站。我希望这对你也有用。您必须捕获异常,因为它仍然会导致异常出现并停止您的代码。
我现在已经设法解决了这个问题。我使用了以下代码:
self.driver.find_element_by_xpath("//*[text()='OK']").click()
在 IE 中单击“确定”按钮,弹出窗口关闭。