我正在使用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;
}
}
我知道有这个(A link to same issue), 但有太多的答案不起作用。
有谁知道如何删除它?
答案 0 :(得分:27)
将此添加到您传递给驱动程序的选项中:
options.addArguments("disable-infobars");
答案 1 :(得分:6)
关于" Chrome由自动化测试软件控制"文本弹出:它不会影响您的测试。要处理其他事情(例如:保存密码),您可以在代码中添加以下行。
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("profile.default_content_settings.popups", 0);
options.addArguments("disable-extensions");
prefs.put("credentials_enable_service", false);
prefs.put("password_manager_enabled", false);
options.setExperimentalOption("prefs", prefs);
options.addArguments("chrome.switches","--disable-extensions");
options.addArguments("--test-type");
DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setCapability(ChromeOptions.CAPABILITY, options);
cap.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.ACCEPT);
System.setProperty("webdriver.chrome.driver",*path of chromedriver.exe*);
wb = new ChromeDriver(cap);
希望它能奏效。
答案 2 :(得分:4)
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("useAutomationExtension", false);
options.setExperimentalOption("excludeSwitches",Collections.singletonList("enable-automation"));
WebDriver driver = new ChromeDriver(options);
将上述代码用于最新的Chrome驱动程序。
答案 3 :(得分:3)
可能有人需要这个用于Capybara,Watir应该是这样的:
Capybara.register_driver :chrome do |app|
$driver = Capybara::Selenium::Driver.new(app, {:browser => :chrome, :args => [ "--disable-infobars" ]})
end
答案 4 :(得分:2)
“ disable-info”开关。 (至少76.0)。
@Rajeev的答案有效,在这里我写了C#的对应语言。
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.AddAdditionalOption("useAutomationExtension", false);
chromeOptions.AddExcludedArgument("enable-automation");
Driver = new ChromeDriver(chromeOptions);
答案 5 :(得分:2)
尝试了许多这些建议的解决方案,但没有一个奏效。好吧,我的代码是用 C# 写的,所以不同平台的 WebDriver 实现可能会有一些差异。
无论如何,我得到的解决方案是在 .NET 上运行时对 Chrome 使用以下选项。
var options = new ChromeOptions();
options.AddExcludedArguments("enable-automation");
在 .NET 上,setExperimentalOption()
类上似乎没有任何 ChromeOptions
方法。
答案 6 :(得分:1)
虽然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提交了一个错误,所以我们会看到,如果我得到解决方案,我会尝试回到这里。
答案 7 :(得分:0)
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");
答案 8 :(得分:0)
如果有人正在使用 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"] }
答案 9 :(得分:0)
它适用于我使用 addArguments(数组(&#34;禁用信息栏&#34;))
这适用于 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);
答案 10 :(得分:0)
量角器解决方案:
我来到这里寻找量角器解决方案,如果对我找到的任何人有用,请在上述答案的帮助下;使用Protractor,您可以在protractor.config文件的capabilities对象中向chromeOptions对象添加Chrome特定选项,例如使用上面讨论的disable-infobars选项使用以下内容:
capabilities: {
'browserName': 'chrome',
'chromeOptions': {
'args': ['disable-infobars']
}
},
使用上面讨论的启用自动化:
capabilities: {
'browserName': 'chrome',
'chromeOptions': {
'excludeSwitches': ['enable-automation']
}
}
在我的情况下,首选禁用信息栏。
答案 11 :(得分:0)
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;
}
答案 12 :(得分:0)
您可以使用
options1.add_argument("--app=https://www.google.com.ph")
答案 13 :(得分:0)
“ disable-infobars”标志已被弃用,但可以通过添加以下内容来避免出现此消息:
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("useAutomationExtension", false);
chromeOptions.setExperimentalOption("excludeSwitches",Collections.singletonList("enable-automation"));
WebDriver driver = new ChromeDriver(chromeOptions);
答案 14 :(得分:0)
它对我有用,使用此代码我可以禁用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)
答案 15 :(得分:-1)
费了很多功夫,但最终我找到了在 2021 年有效的标志组合!
这会告诉 Chrome 忽略所有 SSL 错误,禁用“Chrome 正在由自动化测试软件控制”消息并以全屏模式启动。 将其添加到快捷方式的目标字段:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors --test-type=webdriver --start-fullscreen