C# 如何自动接受Chrome';s";始终在相关应用程序中打开这些类型的链接;Selenium中的对话

C# 如何自动接受Chrome';s";始终在相关应用程序中打开这些类型的链接;Selenium中的对话,c#,google-chrome,selenium,selenium-webdriver,C#,Google Chrome,Selenium,Selenium Webdriver,我正在使用Selenium和C#自动化测试,我需要从浏览器打开一个外部应用程序。问题是,我总是收到这个通知,它会阻止测试的执行 有人知道怎么处理吗 Chrome在用户配置文件中存储接受协议处理程序的设置。从Selenium运行Chrome时,默认情况下Chrome似乎不使用标准的Chrome用户配置文件,而是使用一些未持久化的默认设置 要解决这个问题,您可以从命令行手动启动Chrome,并手动指定新的--user data dir=c:\foo\bar配置文件位置。(将其指向一个新的/空目录,C

我正在使用Selenium和C#自动化测试,我需要从浏览器打开一个外部应用程序。问题是,我总是收到这个通知,它会阻止测试的执行

有人知道怎么处理吗


Chrome在用户配置文件中存储接受协议处理程序的设置。从Selenium运行Chrome时,默认情况下Chrome似乎不使用标准的Chrome用户配置文件,而是使用一些未持久化的默认设置

要解决这个问题,您可以从命令行手动启动Chrome,并手动指定新的
--user data dir=c:\foo\bar
配置文件位置。(将其指向一个新的/空目录,Chrome将为您填充该目录。)

使用此手动启动的浏览器,导航到需要与之交互的页面,激活链接,单击“始终打开”复选框,然后运行该程序一次

接下来,关闭Chrome并保存整个新用户配置文件目录的副本。运行Selenium测试时,请确保始终向Chrome传递指向该用户配置文件的相同命令行选项。这些设置现在被保留,因此将来链接将在没有用户干预的情况下打开。(将正确的命令行参数提供给Chrome可能有帮助。)


对于可重复的测试,您可能希望保存此配置文件的静态副本,并在启动Selenium时重新部署它。

如果您使用的是Javascript+Selenium或WebDriverJ,请使用以下方法:

chromeOptions = {
    'args': ['--test-type',
             '--start-maximized',
             'use-fake-ui-for-media-stream',],
    'prefs': {
        protocol_handler: {
          excluded_schemes: {
            'yourprotocolname': false
          }
        }
      },
};

这是一个令人烦恼的问题,你需要在问题中提到这一点。关于这件事有一个很好的解释。标记为“固定”,考虑使用另一个浏览器,直到bug修复到你的机器上。是的,我已经看到了。但我的问题不是Chrome“忘记”了定制协议。这是如何处理它的第一次出现。我需要:-关闭它-阻止它显示Mya,Chrome肯定有一个boss覆盖开关来抑制这个提示。重新配置Chrome与点击按钮有什么不同并不明显。谷歌“chrome禁用协议处理程序提示”的明显点击。或者使用其他浏览器。我们的应用程序需要在Chrome上运行,因此更换浏览器不是一个选项。此外,我不能只是隐藏或忽略通知。必须允许Chrome打开外部应用程序(G.Printer)才能通过测试。@JoseFerreira,您找到了这个问题的可用/有效解决方案吗?我有同样的问题,但下面列出的答案不适合我的设置。