Chrome 正在被自动化测试软件控制

问题描述 投票:0回答:18

我正在使用 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;
    }
}

我知道有这个(同一问题的链接), 但是有太多的答案不起作用。

有人知道如何删除它吗?

java google-chrome selenium selenium-chromedriver serenity-bdd
18个回答
37
投票

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

options.addArguments("disable-infobars");

31
投票

以前,将“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); 

11
投票

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

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.AddAdditionalCapability("useAutomationExtension", false);
chromeOptions.AddExcludedArgument("enable-automation");
Driver = new ChromeDriver(chromeOptions);

9
投票
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("useAutomationExtension", false);
options.setExperimentalOption("excludeSwitches",Collections.singletonList("enable-automation"));    
WebDriver driver = new ChromeDriver(options);

使用上述代码获取最新的 Chrome 驱动程序。


5
投票

尝试了许多这些建议的解决方案,但没有一个奏效。好的,我的代码是用 C# 写的,所以不同平台的 WebDriver 实现可能会有一些差异。

无论如何,我得到的解决方案是在 .NET 上运行时为 Chrome 使用以下选项

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

在 .NET 上,

setExperimentalOption()
类似乎没有任何
ChromeOptions
方法。


4
投票

虽然

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 的错误,所以我们会看到,如果我得到解决方案,我会尝试回到这里。


3
投票

“禁用信息栏”标志已被弃用,但您可以通过添加以下内容来避免此消息:

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("useAutomationExtension", false);
chromeOptions.setExperimentalOption("excludeSwitches",Collections.singletonList("enable-automation"));    
WebDriver driver = new ChromeDriver(chromeOptions);

3
投票

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)

2
投票

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

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

2
投票

量角器解法:

我来到这里寻找 Protractor 解决方案,如果对我找到的任何人有用,在上述答案的帮助下;使用 Protractor,您可以在 protractor.config 文件的功能对象中向 chromeOptions 对象添加 Chrome 特定选项,例如使用上面讨论的 disable-infobars 选项使用以下内容:

capabilities: {
  'browserName': 'chrome',
  'chromeOptions': {
    'args': ['disable-infobars']
  }
},

要使用上面也讨论过的启用自动化:

capabilities: {
  'browserName': 'chrome',
  'chromeOptions': {
    'excludeSwitches': ['enable-automation']
  }
}

disable-infobars 在我的情况下是首选。


2
投票

它对我有用,使用此代码我可以禁用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)

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");

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;
}

0
投票

使用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);

0
投票

你可以用这个

options1.add_argument("--app=https://www.google.com.ph")

0
投票

在 Python 中,

from selenium.webdriver import ChromeOptions

options = ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-automation"])

-1
投票

如果有人在使用 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"] }

-1
投票

花了很多时间,但最终我找到了在2021年有效的标志组合!

这告诉 Chrome 忽略所有 SSL 错误,禁用“Chrome 正在由自动测试软件控制”消息并以全屏模式启动。 将它添加到快捷方式的目标字段:

"C:\Program Files\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors --test-type=webdriver --start-fullscreen
© www.soinside.com 2019 - 2024. All rights reserved.