我的Python Webdriver脚本正在执行时,我遇到了弹出窗口。 场景:用户可以从“管理”页面单击“添加项目”按钮,然后输入项目名称等,单击“保存”。 如果项目已经存在,则会显示弹出窗口,表示已存在具有此名称的项目。
我想关闭此弹出窗口。我检查过HTML并且没有点击JavaScript函数来调用警报。它不是JavaScript警报。 它是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中单击它?
我在另一篇有人提到使用机器人的文章中读过。我认为这只是Java。
我试过了
alert = self.driver.switch_to_alert()
alert.accept()
只是检查并证明它不是JavaScript警报。显示的错误是
NoAlertPresentException:消息:没有警报处于活动状态
答案 0 :(得分:1)
我现在设法解决了这个问题。我使用了以下代码:
self.driver.find_element_by_xpath("//*[text()='OK']").click()
在IE中单击“确定”按钮,弹出窗口关闭。
答案 1 :(得分:0)
当我试图离开页面时,我也有同样的情况,弹出窗口来询问我是否确定要离开页面。我用FF设置解决了它:
webdriver.DesiredCapabilities.FIREFOX["unexpectedAlertBehaviour"] = "accept"
然后我抓住异常并做我想要的,即离开网站。我希望这也适合你。您必须捕获异常,因为它仍会导致异常出现并停止您的代码。