G. *_*tor 10 c# selenium google-chrome selenium-chromedriver selenium-webdriver
将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);
Run Code Online (Sandbox Code Playgroud)
Rah*_*l L 22
从2019年8月1日开始-您可以发送excludeswitch-enable-automation隐藏消息。并禁用弹出“禁用开发人员模式扩展”,请设置useAutomationExtension = false。查阅useAutomationExtension
经过测试:Windows 10版本76.0.3809.87(官方内部版本)(64位)ChromeDriver 76.0.3809.68
--enable自动化:通知用户由一个自动化测试,他们的浏览器被控制参考
"goog:chromeOptions": {
"excludeSwitches": [ "enable-automation" ],
"useAutomationExtension": false
}
Run Code Online (Sandbox Code Playgroud)
在C#中:
要禁用弹出“禁用开发人员模式扩展”和自动化信息栏消息。
options.AddExcludedArgument("enable-automation");
options.AddAdditionalCapability("useAutomationExtension", false);
Run Code Online (Sandbox Code Playgroud)
在JAVA中:
options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
options.setExperimentalOption("useAutomationExtension", false);
Run Code Online (Sandbox Code Playgroud)
在Python中:
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
Run Code Online (Sandbox Code Playgroud)
在量角器中:
在conf.js / conf.ts中添加以下功能
capabilities: {
'browserName': 'chrome',
"goog:chromeOptions": {
"excludeSwitches": [ "enable-automation" ],
"useAutomationExtension": false
}
},
Run Code Online (Sandbox Code Playgroud)
Chromium团队先前引入了信息栏,Chrome is being controlled by automated test software以Developer mode extension通过此提交禁用Chrome浏览器中的弹出窗口。
根据讨论,由于Chrome自动化信息栏(Chrome 57+)造成的不稳定,并添加了信息栏以显示会话是否受 Chrome中的自动化测试控制,因此观察到Chrome自动化信息栏的出现会Chrome is being controlled by automated test software间歇性地导致该click()功能失败。在测试过程中,当被路过取出的信息栏disable-infobars内chrome_launcher.cc 则如预期没有任何问题上面的测试运行。gmanikpure@chromium.org确认罪魁祸首是变更日志:
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
Run Code Online (Sandbox Code Playgroud)
观察到,在单击期间发生了信息栏动画,并且得到了片状结果。因此,Chromium团队需要以某种方式检测到此变化并重新计算位置。实际的问题是,如果发生Page.frameResize,我们可以使某些操作的结果无效并重试(例如,获取元素位置),但是还有其他一些可以修改页面的操作,例如鼠标单击。鼠标单击(涉及mousemove,mousedown和mouseup事件)可能在中间具有调整大小事件。
因此,Chromium团队通过此提交发布了一个修订:
Disable info bar animations during automated testing.
Run Code Online (Sandbox Code Playgroud)
从那时起,Chrome用户开始使用以下方法禁用信息栏:
Java:
options.addArguments("disable-infobars");
Run Code Online (Sandbox Code Playgroud)蟒蛇:
options.add_argument("disable-infobars")
Run Code Online (Sandbox Code Playgroud)C#:
option.AddArguments("disable-infobars");
Run Code Online (Sandbox Code Playgroud)现在,在讨论中,尽管使用了disable-infobars参数 Chromium团队成员triciac@chromium.org明确提到,Chrome仍受自动化测试软件infobar的控制,但并未受到抑制:
从76版开始,Chrome浏览器的抑制信息栏功能已从命令行选项更改为企业策略设置。
发行说明和Chrome Enterprise发行说明中已经提到了此更改,如下所示
--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.
Run Code Online (Sandbox Code Playgroud)
因此,从Chrome v76.x开始--disable-infobars正式弃用该标志。
由于安全策略通常由公司IT部门管理,因此该策略不是启动ChromeDriver或Chrome时设置的选项或功能。因此,disable-infobars已弃用。
--disable-infobars仍然可以使用以下解决方案从Chrome v76.x中删除该标志:
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");
Run Code Online (Sandbox Code Playgroud)蟒蛇:
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')
Run Code Online (Sandbox Code Playgroud)根据文章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.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4167 次 |
| 最近记录: |