在selenium自动化期间绕过“外部协议请求”弹出窗口

我在mac和ubunto上运行自动化(使用黄瓜,selenium网络驱动程序,junit)

在自动化过程中,我单击一个非http协议的链接

出现“外部协议请求”弹出窗口。

在此处输入图像描述

它阻止我的测试测试网页的其余部分。

我怎样才能轻易绕过它?

我想也许可以编写一个什么也不做的jar然后将它注册到这个外部协议,但是这个弹出窗口仍然会出现,但它无济于事。

也许使用其他浏览器可以帮助?

还有其他建议吗?

您有2种可能的选择。

1)运行带有预定义配置文件的chrome,您已手动禁用协议处理(通过接口或配置文件)(配置文件设置中的“Local State”文件,您应该在相应的部分添加“waze”:false,您可以搜索“mailto”以了解它的位置)。

2)另一种方法是在所有测试开始之前将设置放在测试的构造函数中(我会写一个算法,因为它取决于你的框架和语言):

  • 导航到“chrome:// settings”
  • 按下与css选择器“#advanced-settings-expander”的链接
  • 按下带有css选择器的按钮“#privacyContentSettingsButton”
  • 使用css选择器“#handlers-section input [value = block]”按下带有所需选项的标签
  • 通过css选择器“#content-settings-overlay-confirm”完成

我正在使用chromedriver与selenium和python。 我遇到了同样的问题,以下代码为我工作 –

driver.execute_script("window.confirm = function(msg) { return true; }") prefs = {"protocol_handler.excluded_schemes":{"afp":True,"data":True,"disk":True,"disks":True,"file":True,"hcp":True,"intent":True, "itms-appss":True, "itms-apps":True,"itms":True,"market":True,"javascript":True,"mailto":True,"ms-help":True,"news":True,"nntp":True,"shell":True,"sip":True,"snews":False,"vbscript":True,"view-source":True,"vnd":{"ms":{"radio":True}}}} chrome_options.add_experimental_option("prefs",prefs) 

假设您要为以“sip://”开头的链接禁止协议处理程序弹出窗口
只需添加一个额外的条目作为"sip":True"protocol_handler.excluded_schemes" "sip":True

通过使用AutoIT(Windows环境的第三方工具)。 *)安装它(无论是64位还是32位OS)*)使用Finder工具(AutoIT v3窗口信息),识别“什么都不做”的位置

示例:位置(700,430)

*)在AutoIT ScriptEditor中添加以下代码MouseClick(“left”,“700,430)并将其另存为.au3文件格式。

*)在您的脚本中添加此代码Runtime.getRuntime()。exec(“D:\ AutoIt \ AutoItTest.exe”);

*)运行您的脚本。

对于那些正在寻找Javascript-selenium或webdriverJS答案的人来说,你可以这样做。 chromeOptions = { 'args': ['--test-type', '--start-maximized', 'use-fake-ui-for-media-stream',], 'prefs': { protocol_handler: { excluded_schemes: { 'iamlegend': false } } }, };

用你的协议替换’iamlegend’