Python Webdriver如何处理弹出的浏览器。它不是JavaScript生成的警报

时间:2015-05-20 11:08:02

标签: python selenium-webdriver webdriver

我的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:消息:没有警报处于活动状态

2 个答案:

答案 0 :(得分:1)

我现在设法解决了这个问题。我使用了以下代码:

self.driver.find_element_by_xpath("//*[text()='OK']").click()

在IE中单击“确定”按钮,弹出窗口关闭。

答案 1 :(得分:0)

当我试图离开页面时,我也有同样的情况,弹出窗口来询问我是否确定要离开页面。我用FF设置解决了它:

webdriver.DesiredCapabilities.FIREFOX["unexpectedAlertBehaviour"] = "accept"

然后我抓住异常并做我想要的,即离开网站。我希望这也适合你。您必须捕获异常,因为它仍会导致异常出现并停止您的代码。