在将Chrome更新到76版后,我不能想出如何隐藏“Chrome正被自动化软件控制...”通知覆盖页面上的一些控件。
ChromeDriver的最新稳定版本确实是76.0.3809.68。以下代码适用于Chrome 75和ChromeDriver 74。
var options = new ChromeOptions();
options.AddArgument("--test-type");
options.AddArgument("--disable-extensions");
options.AddArguments("disable-infobars");
options.AddArguments("--disable-notifications");
options.AddArguments("enable-automation");
options.AddArguments("--disable-popup-blocking");
options.AddArguments("start-maximized");
var driver = new ChromeDriver(driverLocation, options, ScriptTimeout);
9条答案
按热度按时间hts6caw31#
自2019年8月1日起-您可以发送excludeswitch - enable-automation以隐藏消息。并禁用弹出的“禁用开发人员模式扩展”设置useAutomationExtension=false。请参阅useAutomationExtension
测试:Windows 10版本76.0.3809.87(正式构建)(64-bit)ChromeDriver 76.0.3809.68
--enable-automation:通知用户他们的浏览器正在由自动测试Reference控制
C#:
要禁用弹出“禁用开发者模式扩展”和自动化信息栏消息。
JAVA语言:
Python中:
量角器中:
在conf.js/conf.ts中添加以下功能
zd287kbt2#
Chrome is being controlled by automated test software
*,通过此commit禁用Chrome浏览器中的Developer mode extension
弹出窗口。根据讨论Flakiness due to Chrome automation infobar (Chrome 57+),添加infobar以显示 * 会话是否由Chrome中的自动测试控制 *,观察到Chrome自动化infobar *
Chrome is being controlled by automated test software
* 的存在间歇性地导致click()
功能失败。在测试期间,当通过在chrome_launcher.cc
内传递disable-infobars
来删除infobar时,上述测试按预期运行,没有任何问题。gmanikpure@chromium.org确认罪魁祸首是changelog:我们观察到,在点击过程中,信息栏动画发生,我们得到了不稳定的结果。因此,Chromium 团队需要以某种方式检测这种变化并重新计算位置。实际问题是,如果发生 Page.frameResized,我们可以使某些操作的结果无效并重试(例如获取元素位置),但还有其他操作可以修改页面,例如鼠标单击。(其涉及mousemove、mousedown和mouseup事件)可以在中间具有调整大小事件。
因此,Chromium 团队通过这个commit发布了一个修订版:
从那时起 Chrome 用户,禁用infobar开始使用:
现在在讨论中,Chrome被自动化测试软件控制,尽管使用了disable-infobars参数,infobar并没有被抑制 Chromium 团队成员triciac@chromium.org清楚地提到:
从v 76开始,抑制信息栏的功能从命令行选项移到了Chrome的企业策略设置中。
在Release Notes和Chrome Enterprise release notes中已经提到了以下更改
因此,从 Chrome v76.x 开始,
--disable-infobars
标志正式弃用。总结
该策略不是启动ChromeDriver或Chrome时设置的 * 选项 * 或 * 功能 ,因为安全策略通常由您的企业IT部门管理。因此不建议使用*
disable-infobars
**。一个小技巧
--disable-infobars
标志仍然可以从 Chrome v76.x 中删除,使用以下2(两个)ExperimentalOption:*
Excluding
enable-automation
的交换机useAutomationExtension
设置为**False
**实现
以下是实现:
外推
根据CommandLineFlagSecurityWarningsEnabled的文章:
7kqas0il3#
这将在C#中工作:
628mspwn4#
要在Chrome v76的C#中隐藏“Chrome is being controlled by automated test software”信息栏,请执行以下操作:
p1tboqfb5#
1.您可以使用
--app=desired_address_without_brackets
标志,例如--app=https://google.com
。适用于Chrome 80。当然,只有当你的项目可以在App模式下启动,并且你有一个页面链接可以插入那里时,它才能工作。
1.您也可以使用
--test-type
命令行标志,它也可以删除此类信息栏。注意!* 在非常罕见的情况下,它会导致奇怪的事情,如静音页面声音!* 所以我不确定我应该首先推荐它。
dgsult0t6#
在Ruby中,对于selenium-webdriver gem(通常与Capybara一起使用),使用
::Selenium::WebDriver::Chrome::Options#add_option('excludeSwitches', ['enable-automation'])
。例如:
cnwbcb6i7#
在Ruby中,我的另一个选择是:
xxslljrj8#
显然,您可以使用CommandLineFlagSecurityWarningsEnabledchrome策略-https://www.chromium.org/administrators/policy-list-3#CommandLineFlagSecurityWarningsEnabled
在Linux上,我可以在/etc/opt/chrome/policies/managed/managed_policies. json中创建一个文件,内容如下:
{"CommandLineFlagSecurityWarningsEnabled": false}
,这禁用了警告。在Windows 10 Pro上,当我将Chrome组策略“为命令行标志启用安全警告”设置为禁用时(请参阅https://support.google.com/chrome/a/answer/187202)并检查注册表中的Software\Policies\Google\Chrome\CommandLineFlagSecurityWarningsEnabled的值为0x 00000000它不适合我禁用此警告.也许它会为你?想知道如果其他人可以帮助阐明为什么它不会'无法在Windows上工作
dzhpxtsq9#
如上所述,在Java中用途:
chromeOptions.setExperimentalOption("excludeSwitches",Collections.singletonList("enable-automation"));
因为:
已弃用,工作方式相同。