无法在Chrome v76中隐藏“Chrome正在被自动化软件控制”信息栏

xyhw6mcr  于 2023-04-27  发布在  Go
关注(0)|答案(9)|浏览(243)

在将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);
hts6caw3

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控制

"goog:chromeOptions": {

        "excludeSwitches": [ "enable-automation" ],
        "useAutomationExtension": false
     }

C#:

要禁用弹出“禁用开发者模式扩展”和自动化信息栏消息。

options.AddExcludedArgument("enable-automation");
options.AddAdditionalCapability("useAutomationExtension", false);

JAVA语言:

options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
options.setExperimentalOption("useAutomationExtension", false);

Python中:

options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)

量角器中:

在conf.js/conf.ts中添加以下功能

capabilities: {
    'browserName': 'chrome',
    "goog:chromeOptions": {
      "excludeSwitches": [ "enable-automation" ],
      "useAutomationExtension": false
   }
  },
zd287kbt

zd287kbt2#

  • Chromium* 团队之前引入了infobar * 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

Add an infobar if a session is being controlled by an automated test.

This infobar is only displayed if the browser is launched with the --enable-automation switch. It also disables the developer mode extensions warning bubble.

TEST=launch with and without --enable-automation, and check for presence of automation infobar

我们观察到,在点击过程中,信息栏动画发生,我们得到了不稳定的结果。因此,Chromium 团队需要以某种方式检测这种变化并重新计算位置。实际问题是,如果发生 Page.frameResized,我们可以使某些操作的结果无效并重试(例如获取元素位置),但还有其他操作可以修改页面,例如鼠标单击。(其涉及mousemove、mousedown和mouseup事件)可以在中间具有调整大小事件。
因此,Chromium 团队通过这个commit发布了一个修订版:

Disable info bar animations during automated testing.

从那时起 Chrome 用户,禁用infobar开始使用:

  • Java:
options.addArguments("disable-infobars");
  • Python:
options.add_argument("disable-infobars")
  • C#:
option.AddArguments("disable-infobars");

现在在讨论中,Chrome被自动化测试软件控制,尽管使用了disable-infobars参数,infobar并没有被抑制 Chromium 团队成员triciac@chromium.org清楚地提到:
从v 76开始,抑制信息栏的功能从命令行选项移到了Chrome的企业策略设置中。
Release NotesChrome Enterprise release notes中已经提到了以下更改

--disable-infobars is no longer supported

Chrome will no longer support the --disable-infobars flag, which was used to hide pop-up warnings
from Chrome Browser. To support automated testing, kiosks, and automation, the
CommandLineFlagSecurityWarningsEnabled policy was added to allow you to disable some security
warnings.

因此,从 Chrome v76.x 开始,--disable-infobars标志正式弃用。

总结

该策略不是启动ChromeDriver或Chrome时设置的 * 选项 * 或 * 功能 ,因为安全策略通常由您的企业IT部门管理。因此不建议使用*disable-infobars**。

一个小技巧

--disable-infobars标志仍然可以从 Chrome v76.x 中删除,使用以下2(两个)ExperimentalOption

*Excludingenable-automation的交换机

  • useAutomationExtension设置为**False**

实现

以下是实现:

  • Java:
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");
options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
options.setExperimentalOption("useAutomationExtension", false);
WebDriver driver = new ChromeDriver(options);
driver.get("https://google.com");
  • Python:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.get('https://www.google.co.in')

外推

根据CommandLineFlagSecurityWarningsEnabled的文章:

Enable security warnings for command-line flags

Supported on: Google Chrome (Linux, Mac, Windows) since version 76

Description: If disabled, prevents security warnings from appearing when Chrome is launched with some potentially dangerous command-line flags.
             If enabled or unset, security warnings are displayed when some command-line flags are used to launch Chrome.
             On Windows, this policy is only available on instances that are joined to a Microsoft Active Directory domain or Windows 10 Pro or Enterprise instances that are enrolled for device management.
7kqas0il

7kqas0il3#

这将在C#中工作:

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.AddArgument("--incognito");
chromeOptions.AddExcludedArgument("enable-automation");
chromeOptions.AddAdditionalCapability("useAutomationExtension", false);
628mspwn

628mspwn4#

要在Chrome v76的C#中隐藏“Chrome is being controlled by automated test software”信息栏,请执行以下操作:

var chromeOptions = new ChromeOptions();
...
chromeOptions.AddAdditionalCapability("useAutomationExtension", false);
chromeOptions.AddExcludedArgument("enable-automation");
...
var driver = new ChromeDriver(ChromeDriverService.CreateDefaultService(), chromeOptions, commandTimeout);
p1tboqfb

p1tboqfb5#

1.您可以使用--app=desired_address_without_brackets标志,例如--app=https://google.com。适用于Chrome 80。
当然,只有当你的项目可以在App模式下启动,并且你有一个页面链接可以插入那里时,它才能工作。
1.您也可以使用--test-type命令行标志,它也可以删除此类信息栏。
注意!* 在非常罕见的情况下,它会导致奇怪的事情,如静音页面声音!* 所以我不确定我应该首先推荐它。

dgsult0t

dgsult0t6#

在Ruby中,对于selenium-webdriver gem(通常与Capybara一起使用),使用::Selenium::WebDriver::Chrome::Options#add_option('excludeSwitches', ['enable-automation'])
例如:

Capybara.register_driver :selenium_chrome do |app|
  browser_options = ::Selenium::WebDriver::Chrome::Options.new
  browser_options.add_option 'excludeSwitches', ['enable-automation']
  Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
end
cnwbcb6i

cnwbcb6i7#

在Ruby中,我的另一个选择是:

Capybara.register_driver :selenium_chrome do |app|
  Capybara::Selenium::Driver.new(app, browser: :chrome, options: chrome_options)
end

def chrome_options
  options = Selenium::WebDriver::Chrome::Options.new
  options.add_option 'excludeSwitches', ['enable-automation']
  options.add_argument('incognito')
  options.add_argument('disable-geolocation')
  options.add_argument('ignore-certificate-errors')
  options.add_argument('disable-popup-blocking')
  options.add_argument('disable-web-security')
  options.add_argument('--disable-infobars')
  options.add_argument('disable-translate')
  options
end
xxslljrj

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上工作

dzhpxtsq

dzhpxtsq9#

如上所述,在Java中用途:
chromeOptions.setExperimentalOption("excludeSwitches",Collections.singletonList("enable-automation"));
因为:

chromeOptions.setExperimentalOption("useAutomationExtension", false);

已弃用,工作方式相同。

相关问题