【发布时间】:2017-08-22 13:46:37
【问题描述】:
在 Chrome 浏览器中登录后,我会从浏览器中弹出保存密码。我想处理该弹出窗口并想使用 Robot Framework 关闭它 Browse popup window 谢谢
【问题讨论】:
标签: google-chrome robotframework
在 Chrome 浏览器中登录后,我会从浏览器中弹出保存密码。我想处理该弹出窗口并想使用 Robot Framework 关闭它 Browse popup window 谢谢
【问题讨论】:
标签: google-chrome robotframework
这个问题之前已经用纯 Python 上下文提出过并得到了回答。这个答案在这个SO post 上继续,用于一个工作机器人示例。
您看到的弹出窗口是由 Chrome 本身生成的。这不是 HTML 警报。由于这个原因,Selenium2Library 关键字都不会对其产生任何影响。也不会设置 cookie 或 javascript。
可以使用chrome://settings 链接手动设置这些设置。转到高级设置,然后向下滚动到密码和表单。取消勾选第二项,这将阻止弹出。
要在 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,因为后者被解释为字符串,然后作为“false”添加到Chrome " 而不是正确的值false。
第二项是首选项不是添加为参数,而是通过将dictionary 分配给ChromeOptions() 对象的prefs 属性,如下所示:add_experimental_option prefs ${prefs}
【讨论】:
说实话,我认为这不是真的(因为它是浏览器的属性。)您对此有疑问吗?您唯一可以忽略的是 javascript alert,可能最好的处理方法是:
${alert} = Get Alert Message dismiss=${dismiss}
我在使用运行关键字和忽略错误的测试拆解中有这个,它使我能够获取可选的 js 警报内容并进行调试(也可以关闭它,因为可以执行套件的其余部分。)
【讨论】:
三种方法来做到这一点。
1) 很多时候,一旦弹出窗口出现在屏幕上并消失,就会设置一个 cookie,您可以在开发人员控制台-> 应用程序中查看该 cookie。如果您使用 Add Cookie 关键字设置此 cookie 的值。弹出窗口不会出现。
2) 如果首先不起作用,则打开开发者工具并从开发者工具 -> 应用程序监视本地商店并关闭弹出窗口。你会注意到一些带有值的变量存储在本地存储中。您可以使用脚本设置该值,并且在执行变量时不会看到弹出窗口。
3) 如果 first 和 second 不起作用,则弹出窗口很可能与 javascript 变量相关联。使用 Execute Javascript 关键字设置 java 脚本变量,您的问题必须得到解决。
与您的开发团队交谈,看看哪种方式适合您。
【讨论】: