Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Chrome由自动化测试软件控制_Java_Google Chrome_Selenium_Selenium Chromedriver_Serenity Bdd - Fatal编程技术网

Java Chrome由自动化测试软件控制

Java Chrome由自动化测试软件控制,java,google-chrome,selenium,selenium-chromedriver,serenity-bdd,Java,Google Chrome,Selenium,Selenium Chromedriver,Serenity Bdd,我使用Serenity BDD(Selenium)在Chrome中运行自动测试 我不得不下载一个新的ChromeDriver,因为我的测试无法运行->测试将打开ChromeDriver,但无法“以用户身份浏览”。当我在谷歌上搜索这个问题时,他们说我必须更新ChromeDriver 因此,我将ChromeDriver更新为2.28版,并将Chrome版本更新为57.0.2987.98版 但是现在-每次我运行测试时,都会出现一条恼人的文字: Chrome由自动化测试软件控制 它问我是否要保存密码。(

我使用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;
    }
}
我知道有一个(), 但是有太多的答案是行不通的

任何知道如何删除该通知的人?

以前,将“禁用信息栏”ChromeOptions传递给WebDriver会阻止Chrome显示该通知。最近,“禁用信息栏”选项已被弃用,不再删除该通知。目前的解决方法是传入一个名为“禁用信息栏”的选项排除开关”,然后排除“启用自动化”开关


将此添加到传递给驱动程序的选项中:

options.addArguments("disable-infobars");
Map prefs=new HashMap();
//关闭多个下载警告的步骤
prefs.put(“profile.default\u content\u settings.popups”,0);
prefs.put(“profile.content\u settings.pattern\u pairs.*.multiple automatic downloads”,1);
//关闭下载提示
prefs.put(“下载.提示下载”,false);
prefs.put(“凭证启用服务”,false);
//要停止保存密码,请执行以下操作
prefs.put(“密码管理器已启用”,false);
ChromeOptions选项=新的ChromeOptions();
options.addArguments(“chrome.switches”,“--禁用扩展”);
//禁用任何浏览器通知的步骤
options.addArguments(“--disable notification”);
//禁用提示信息消息的黄色条带信息栏
options.addArguments(“禁用信息栏”);
选项。设置实验选项(“prefs”,prefs);
System.setProperty(“webdriver.chrome.driver”、“Chromedriver path”);
options.addArguments(“--test type”);
驱动程序=新的色度驱动程序(可选);
Log.info(“Chrome浏览器启动”);

可能有人需要水豚,水应该是这样的:

Capybara.register_driver :chrome do |app|
  $driver = Capybara::Selenium::Driver.new(app, {:browser => :chrome, :args => [ "--disable-infobars" ]})
end
driven_by :selenium, using: :chrome, screen_size: [1400, 1400], options: { args: ["--disable-infobars"] }

如果有人正在使用Rails 5.1+,这稍微改变了测试结构,现在在该文件中为系统测试配置了Capybara:

application_system_test_case.rb
您可以在由驱动的选项中添加“args”,如下所示:

Capybara.register_driver :chrome do |app|
  $driver = Capybara::Selenium::Driver.new(app, {:browser => :chrome, :args => [ "--disable-infobars" ]})
end
driven_by :selenium, using: :chrome, screen_size: [1400, 1400], options: { args: ["--disable-infobars"] }

它通过使用addArguments(数组(“禁用信息栏”)

这是针对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);

虽然禁用信息栏路径将起作用,但它可能会在所有情况下(如建议的那样)抑制信息栏,而不仅仅是OP所指的情况。这充其量只是过火了,如果您没有收到一些重要消息,将来可能会导致意外和无法解释的行为

我认为最好是通过在配置/设置区域禁用所提供的开关,而不做任何与禁用inforbars有关的操作。
启用自动化
开关的说明:

通知用户他们的浏览器正在由自动测试控制

对于
nightwatch.conf.js
它看起来像这样(对我来说很有用):

这应该只做我们所追求的:摆脱那个特别讨厌的信息


编辑[2017-11-14]:这现在导致了一个更加恼人的
禁用开发模式扩展的警告/警告。我尝试了我能找到的所有相关的查找标志/开关,但没有效果。我已经用Chromium提交了一个错误,所以我们将看到,如果我得到解决方案,我将尝试返回到这里。

量角器解决方案:

我来到这里是为了寻找一个量角器解决方案,如果对我找到的任何人都有用的话,可以从上面的答案中得到帮助;使用量角器,您可以在grandor.config文件中的capabilities对象中向chromeOptions对象添加Chrome特定选项,例如使用上面讨论的disable Infobar选项使用以下:

capabilities: {
  'browserName': 'chrome',
  'chromeOptions': {
    'args': ['disable-infobars']
  }
},
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("useAutomationExtension", false);
chromeOptions.setExperimentalOption("excludeSwitches",Collections.singletonList("enable-automation"));    
WebDriver driver = new ChromeDriver(chromeOptions);
要使用上面也讨论过的“启用自动化”,请执行以下操作:

capabilities: {
  'browserName': 'chrome',
  'chromeOptions': {
    'excludeSwitches': ['enable-automation']
  }
}
在我的情况下,禁用信息栏是首选。

public WebDriver SetupChromeDriver(){
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;
}
//初始化Chrome驱动程序 ChromeOptions选项=新的ChromeOptions(); Map prefs=新的HashMap(); prefs.put(“安全浏览已启用”,“真”); 选项。设置实验选项(“prefs”,prefs); options.addArguments(“--disable notification”); options.addArguments(“--start maximized”); options.addArguments(“禁用信息栏”); System.setProperty(“webdriver.chrome.driver”,“E:/important Softwares/chrome driver/chromedriver_2.37.exe”); 驱动程序=新的色度驱动程序(可选); 返回驱动器; }
将上述代码用于最新的Chrome驱动程序。

最新的Chrome驱动程序不再支持“禁用信息”开关。(至少76.0)。
@Rajeev的答案有效,我在这里为C#写了对应的答案

你可以用这个

options1.add_argument("--app=https://www.google.com.ph")
“禁用信息栏”标志已被弃用,但您可以通过添加以下内容来避免此消息:

capabilities: {
  'browserName': 'chrome',
  'chromeOptions': {
    'args': ['disable-infobars']
  }
},
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("useAutomationExtension", false);
chromeOptions.setExperimentalOption("excludeSwitches",Collections.singletonList("enable-automation"));    
WebDriver driver = new ChromeDriver(chromeOptions);

我尝试了许多建议的解决方案,但没有一个有效。好的,我的代码是C#,因此不同平台的WebDriver实现可能存在一些差异

不管怎么说,我找到的解决方案是在.NET上运行Chrome时使用以下选项

var options = new ChromeOptions();
options.AddExcludedArguments("enable-automation");

在.NET上,
ChromeOptions
类上似乎没有任何
setExperimentalOption()
方法。

这花了很多功夫,但最终我发现了一个组合标志,它在2021年起作用
var options = new ChromeOptions();
options.AddExcludedArguments("enable-automation");
"C:\Program Files\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors --test-type=webdriver --start-fullscreen
    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)