我正在使用 Serenity BDD (Selenium) 在 Chrome 中运行自动化测试。
我必须下载一个新的 ChromeDriver,因为我的测试无法运行 -> 测试将打开 ChromeDriver 但无法“以用户身份浏览”。当我用谷歌搜索这个问题时,他们说我必须更新 ChromeDriver。
所以我将 ChromeDriver 更新到 2.28 版本,我也将 Chrome 版本更新到版本 57.0.2987.98.
但是现在 - 每次我运行测试时都会出现这个烦人的文本:
Chrome 正在被自动化测试软件控制
它问我是否要保存密码。 (因为我的“积分”不够,所以不能加图)
在以前的版本中,我通过以下方式设法阻止了这两个东西:
public class CustomChromeDriver implements DriverSource {
@Override
public WebDriver newDriver() {
try {
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
Proxy proxy = new Proxy();
String proxyServer = String.format("AProxyIDontWantToDisplay", System.getenv("proxy.username"), System.getenv("proxy.password"));
proxy.setHttpProxy(proxyServer);
capabilities.setCapability("proxy", proxy);
ChromeOptions options = new ChromeOptions();
options.addArguments(Arrays.asList("--no-sandbox","--ignore-certificate-errors","--homepage=about:blank","--no-first-run"));
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);
return driver;
} catch (Exception e) {
throw new Error(e);
}
}
@Override
public boolean takesScreenshots() {
return true;
}
}
我知道有这个(同一问题的链接), 但是有太多的答案不起作用。
有人知道如何删除它吗?
将此添加到您传递给驱动程序的选项中:
options.addArguments("disable-infobars");
以前,将“disable-infobars”ChromeOption 传递给 WebDriver 会阻止 Chrome 显示此通知。最近,“disable-infobars”选项已被弃用,不再删除通知。当前的解决方法是传入一个名为“excludeSwitches”的选项,然后排除“enable_automation”开关。
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches", new String[]{"enable-automation"});
WebDriver driver = new ChromeDriver(options);
最新的 chromedriver 不再支持“禁用信息”开关。 (至少 76.0)。
@Rajeev 的答案有效,在这里我为 C# 编写了对应的答案。
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.AddAdditionalCapability("useAutomationExtension", false);
chromeOptions.AddExcludedArgument("enable-automation");
Driver = new ChromeDriver(chromeOptions);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("useAutomationExtension", false);
options.setExperimentalOption("excludeSwitches",Collections.singletonList("enable-automation"));
WebDriver driver = new ChromeDriver(options);
使用上述代码获取最新的 Chrome 驱动程序。
尝试了许多这些建议的解决方案,但没有一个奏效。好的,我的代码是用 C# 写的,所以不同平台的 WebDriver 实现可能会有一些差异。
无论如何,我得到的解决方案是在 .NET 上运行时为 Chrome 使用以下选项
var options = new ChromeOptions();
options.AddExcludedArguments("enable-automation");
在 .NET 上,
setExperimentalOption()
类似乎没有任何 ChromeOptions
方法。
虽然
disable-infobars
路线会起作用,但它可能会在所有情况下抑制信息栏(如建议here),而不仅仅是OP所指的情况。这充其量是矫枉过正,如果您没有收到一些重要消息,将来可能会导致意外和莫名其妙的行为。
enable-automation
开关,方法是在您的配置/设置的excludeSwitches
区域禁用它,同时不对
disable-inforbars
做任何事情。 enable-automation
开关说明:
告知用户他们的浏览器正在由自动化测试控制。
对于
nightwatch.conf.js
它看起来像这样(并且对我有用):
desiredCapabilities: {
...
chromeOptions: {
excludeSwitches: ['enable-automation'],
...
}
}
这应该只做我们所追求的:摆脱那个特定的讨厌的消息!
编辑[2017-11-14]:这现在导致更烦人的
Disable Developer Mode Extensions
警报/警告。我已经尝试了所有我能找到的相关标志/开关,但都无济于事。我已经提交了 Chromium 的错误,所以我们会看到,如果我得到解决方案,我会尝试回到这里。
“禁用信息栏”标志已被弃用,但您可以通过添加以下内容来避免此消息:
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("useAutomationExtension", false);
chromeOptions.setExperimentalOption("excludeSwitches",Collections.singletonList("enable-automation"));
WebDriver driver = new ChromeDriver(chromeOptions);
2022 年开始工作
删除 Chrome 被 python 中的自动化测试软件控制
from selenium.webdriver.chrome.webdriver import WebDriver
from selenium.webdriver.chrome.options import Options
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_experimental_option("excludeSwitches", ['enable-automation']);
URL = "https://google.com/"
driver.get(URL)
可能有人需要这个给水豚,Watir应该是这样的:
Capybara.register_driver :chrome do |app|
$driver = Capybara::Selenium::Driver.new(app, {:browser => :chrome, :args => [ "--disable-infobars" ]})
end
量角器解法:
我来到这里寻找 Protractor 解决方案,如果对我找到的任何人有用,在上述答案的帮助下;使用 Protractor,您可以在 protractor.config 文件的功能对象中向 chromeOptions 对象添加 Chrome 特定选项,例如使用上面讨论的 disable-infobars 选项使用以下内容:
capabilities: {
'browserName': 'chrome',
'chromeOptions': {
'args': ['disable-infobars']
}
},
要使用上面也讨论过的启用自动化:
capabilities: {
'browserName': 'chrome',
'chromeOptions': {
'excludeSwitches': ['enable-automation']
}
}
disable-infobars 在我的情况下是首选。
它对我有用,使用此代码我可以禁用Chrome由自动化测试软件以及保存密码弹出窗口`
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("credentials_enable_service", false);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",Collections.singletonList("enable-automation"));
options.setExperimentalOption("prefs", prefs);
WebDriver driver = new ChromeDriver(options)
Map<String, Object> prefs = new HashMap<String, Object>();
//To Turns off multiple download warning
prefs.put("profile.default_content_settings.popups", 0);
prefs.put( "profile.content_settings.pattern_pairs.*.multiple-automatic-downloads", 1 );
//Turns off download prompt
prefs.put("download.prompt_for_download", false);
prefs.put("credentials_enable_service", false);
//To Stop Save password propmts
prefs.put("password_manager_enabled", false);
ChromeOptions options = new ChromeOptions();
options.addArguments("chrome.switches","--disable-extensions");
//To Disable any browser notifications
options.addArguments("--disable-notifications");
//To disable yellow strip info bar which prompts info messages
options.addArguments("disable-infobars");
options.setExperimentalOption("prefs", prefs);
System.setProperty("webdriver.chrome.driver", "Chromedriver path");
options.addArguments("--test-type");
driver = new ChromeDriver(options);
Log.info("Chrome browser started");
public WebDriver SetupChromeDriver(){
//Initialize Chrome Driver
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("safebrowsing.enabled", "true");
options.setExperimentalOption("prefs", prefs);
options.addArguments("--disable-notifications");
options.addArguments("--start-maximized");
options.addArguments("disable-infobars");
System.setProperty("webdriver.chrome.driver", "E:/Importent Softwares/Chrome Driver/chromedriver_2.37.exe");
driver = new ChromeDriver(options);
return driver;
}
使用addArguments(array("disable-infobars"))对我有用
这是为facebook/php-webdriver
$options = new ChromeOptions();
$options->addArguments(array("disable-infobars"));
$capabilities = DesiredCapabilities::chrome();
$capabilities->setCapability(ChromeOptions::CAPABILITY, $options);
$this->driver = RemoteWebDriver::create('http://localhost:4444/wd/hub', $capabilities);
你可以用这个
options1.add_argument("--app=https://www.google.com.ph")
在 Python 中,
from selenium.webdriver import ChromeOptions
options = ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-automation"])
如果有人在使用 Rails 5.1+,它稍微改变了测试结构,现在在此文件中配置了 Capybara 以进行系统测试:
application_system_test_case.rb
您可以在driven_by的选项中添加“args”,如下所示:
driven_by :selenium, using: :chrome, screen_size: [1400, 1400], options: { args: ["--disable-infobars"] }
花了很多时间,但最终我找到了在2021年有效的标志组合!
这告诉 Chrome 忽略所有 SSL 错误,禁用“Chrome 正在由自动测试软件控制”消息并以全屏模式启动。 将它添加到快捷方式的目标字段:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors --test-type=webdriver --start-fullscreen