如何在机器人框架中关闭浏览器弹出窗口?

时间:2017-03-29 07:40:28

标签: google-chrome robotframework

在Chrome浏览器中登录后,我从浏览器中获取了一个保存密码弹出窗口。我想处理该弹出窗口并希望使用Robot Framework关闭它 Browse popup window 感谢

3 个答案:

答案 0 :(得分:1)

之前已经使用纯Python上下文询问并回答了这个问题。对于一个有效的机器人示例,这个答案在SO post继续。

您看到的弹出窗口是由Chrome本身生成的。这不是HTML警报。因此,Selenium2Library关键字都不会对其产生任何影响。也不会设置cookie或javascript。

enter image description here

可以使用chrome://settings链接手动设置这些设置。转到高级设置,然后向下滚动到密码和表单。取消第二项,这将阻止弹出窗口。

enter image description here

要在Robot Framework中自动执行相同操作,需要使用其他首选项启动WebDriver:

 Chrome With Preferences
    ${chrome_options} =     Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver

    ${prefs}    Create Dictionary   credentials_enable_service=${false}  

    Call Method    ${chrome_options}    add_experimental_option    prefs    ${prefs}
    Call Method    ${chrome_options}    add_argument    --disable-infobars 

    Create WebDriver    Chrome    chrome_options=${chrome_options}

    Go To    https://secure.url.com

此处的关键内容为credentials_enable_service=${false},其中使用${false}而不是 false 非常重要,因为后者被解释为字符串,然后作为<添加到Chrome em>“false”而不是正确的值false

第二项是不将首选项添加为参数,而是通过将dictionary分配给prefs对象的ChromeOptions()属性,如下所示:{ {1}}

答案 1 :(得分:0)

我认为这不是真实的(因为它是浏览器的属性。)你有问题吗?唯一可以忽略的是javascript警报,可能最好的办法是:

${alert} =    Get Alert Message    dismiss=${dismiss}

我在测试中使用Run Keyword和Ignore Error进行了这项操作,这使我能够获取可选的js警报内容和调试(也可以解析它,可以执行套件的其余部分。)

答案 2 :(得分:0)

三种方法要做。

1)很多时候,一旦弹出窗口出现在屏幕上并且消失了,就会设置一个cookie,你可以在开发者控制台中查看 - &gt;应用。如果您使用添加Cookie 关键字将此Cookie设置为值。弹出窗口不会出现。

2)如果首先不起作用,那么打开开发人员工具并从开发人员工具监控本地商店 - &gt;应用程序并关闭弹出窗口。 U会注意到某个变量的值存储在本地存储中。您可以使用脚本设置该值,并且在执行变量时不会看到弹出窗口。

3)如果第一个和第二个不起作用,则弹出窗口很可能与javascript变量相关联。使用执行Javascript 关键字设置java脚本变量,您的问题必须解决。

与您的开发团队交谈,了解哪种方式适合您。