Chrome контролируется программным обеспечением для автоматизированного тестирования

Я запускаю автоматические тесты в Chrome с Serenity BDD (Selenium).

Мне пришлось загрузить новый 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;
    }
}

Я знаю, что есть этот (Ссылка на ту же проблему), но есть слишком много ответов, которые не работают.

Кто-нибудь знает, как это удалить?


person BobbyB    schedule 31.03.2017    source источник
comment
О всплывающем тексте, управляемом автоматизацией: есть ли проблема, которую это вызывает? На днях я возился с драйвером Chrome, и он не отображал скриншоты и т. Д., И не вызывал никаких проблем с взаимодействием элементов.   -  person Aaron Davis    schedule 31.03.2017
comment
Нет, на самом деле, у меня есть некоторые компоненты под этим всплывающим окном, которые не будут отображаться на снимках экрана при нажатии. вот почему :)   -  person BobbyB    schedule 31.03.2017
comment
Может ли он перемещаться по URL-адресу и взаимодействовать с элементами?   -  person NarendraR    schedule 31.03.2017
comment
@BobbyB вы пробовали сделать снимок экрана и посмотреть, закрыты ли они? Как я уже сказал, я не видел всплывающего окна на скриншотах, которые я сделал на днях.   -  person Aaron Davis    schedule 31.03.2017


Ответы (14)


Добавьте это к параметрам, которые вы передаете драйверу:

options.addArguments("disable-infobars");
person jgode    schedule 31.03.2017
comment
у меня не работает. - person MansoorShaikh; 07.12.2020
comment
Этот ответ был дан более 3 лет назад. Chrome мог изменить аргумент. Это может помочь - person jgode; 07.12.2020

Ранее передача параметра Chrome «disable-infobars» в WebDriver не позволяла Chrome отображать это уведомление. В последнее время параметр «disable-infobars» устарел и больше не удаляет уведомление. Текущий обходной путь для этого - передать параметр называется "excludeSwitches", а затем исключить переключатель "enable_automation".

ChromeOptions options = new ChromeOptions(); 
options.setExperimentalOption("excludeSwitches", new String[]{"enable-automation"}); 
WebDriver driver = new ChromeDriver(options); 
person Anuj Teotia    schedule 31.03.2017
comment
Это решение не останавливает отображение уведомления при использовании в Java. Только options.addArguments("disable-infobars"); нормально работает - person Chandra Shekhar; 05.04.2017
comment
Чтобы отключить уведомления, добавьте это: options.addArguments (- disable-notifications); - person Anuj Teotia; 05.04.2017
comment
Хотя я согласен с тем, что почти во всех случаях это не повлияет на ваше тестирование, в моем случае это повлияло на вас. Приложение, которое я пытался автоматизировать, не настраивало экран на уменьшенную площадь, когда отображалась информационная панель, и, следовательно, критические элементы, которые мне нужно было подтвердить как интерактивные, не были потому, что они были скрыты другими элементами. Это явно проблема программирования / дизайна разработчиков, но отключение информационных панелей устранило мою проблему, экран отображался правильно, когда они исчезли. - person Bill Hileman; 26.04.2019
comment
disable-infobars больше не поддерживается для последних версий драйверов (76.0). Проверьте ответ @Rajeev для java и мой ответ для C #. - person David Piao; 04.09.2019
comment
@BillHileman Я изменил ответ на последний рабочий код - person Anuj Teotia; 13.12.2019

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

Используйте приведенные выше коды для последних версий драйверов Chrome.

person Rajeev    schedule 13.08.2019

Переключатель "disable-info" больше не поддерживается для последних хромированных драйверов. (по крайней мере 76.0).
@ Rajeev ответ работает, и здесь я пишу аналог для С #.

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.AddAdditionalCapability("useAutomationExtension", false);
chromeOptions.AddExcludedArgument("enable-automation");
Driver = new ChromeDriver(chromeOptions);
person David Piao    schedule 04.09.2019
comment
Это разбудило меня - person MERN; 12.11.2019
comment
Привет, @David Piao, у меня нет метода AddAdditionalOption в классе ChromeOptions, я что-то упускаю? - person XavierAM; 05.01.2020
comment
Вы уверены, что используете C # / Selenium? - person David Piao; 05.01.2020
comment
если у вас нет AddAdditionalOption, проверьте AddAdditionalCapability - person Fidan; 07.02.2020
comment
Спасибо за ответ! Очень неприятно, что нет исчерпывающего ресурса по возможностям Chrome ... - person BVengerov; 07.05.2020

Может кому-то это понадобится для Капибары, Ватир должен быть таким:

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

Хотя маршрут disable-infobars будет работать, он, скорее всего, подавит информационную панель во всех случаях (как предлагается здесь), а не только случай, о котором идет речь в ОП. Это в лучшем случае излишество и может привести к неожиданному и необъяснимому поведению в будущем, если вы не получите какое-то важное сообщение.

Я думаю, что лучше использовать предоставленный переключатель enable-automation от отключение в excludeSwitches в вашей конфигурации / настройке, ничего не делая в отношении disable-inforbars. Описание переключателя enable-automation:

Сообщите пользователям, что их браузер контролируется автоматическим тестом.

Для nightwatch.conf.js это выглядело бы примерно так (и у меня сработало):

desiredCapabilities: {
  ...
  chromeOptions: {
    excludeSwitches: ['enable-automation'],
    ...
  }
}

Это должно сделать только то, что нам нужно: избавиться от этого надоедливого сообщения!

Изменить [2017-11-14]: теперь это вызывает еще более раздражающее Disable Developer Mode Extensions предупреждение / предупреждение. Я перепробовал все подходящие флажки / переключатели, которые могли бы помочь, но безрезультатно. Я зарегистрировал ошибку в Chromium, посмотрим, и я постараюсь вернуться сюда, если получу разрешение.

person cwnewhouse    schedule 14.11.2017

Флаг disable-infobars устарел, но вы можете избежать появления этого сообщения, добавив следующее:

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

Пробовали многие из этих предложенных решений, но ни одно из них не помогло. Хорошо, мой код написан на C #, поэтому могут быть некоторые различия в реализациях WebDriver для разных платформ.

В любом случае, решение, над которым я работал, заключалось в использовании следующих параметров Chrome при работе в .NET.

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

В .NET, похоже, нет никакого setExperimentalOption() метода в классе ChromeOptions.

person Mika Berglund    schedule 17.01.2021

Транспортир:

Я прибыл сюда в поисках решения Транспортира, если это полезно для всех, кого я нашел, с помощью приведенных выше ответов; с помощью Protractor вы можете добавить определенные параметры Chrome к объекту chromeOptions в пределах объекта возможностей в файле protractor.config, например, чтобы использовать параметр disable-infobars, описанный выше, используйте следующее:

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

Чтобы использовать автоматизацию включения, о которой говорилось выше:

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

disable-infobars предпочтительнее в моих обстоятельствах.

person MatthewThomasGB    schedule 28.01.2018

Если кто-то использует Rails 5.1+, который немного изменил структуру тестирования, и теперь в этом файле настроена Capybara для системных тестов:

application_system_test_case.rb

Вы можете добавить "аргументы" в параметры для Driven_by следующим образом:

driven_by :selenium, using: :chrome, screen_size: [1400, 1400], options: { args: ["--disable-infobars"] }
person PDD    schedule 19.05.2017

У меня это работает с использованием 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);
person Tree Go    schedule 10.08.2017

Вы можете использовать это

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

У меня это работает, с помощью этого кода я могу отключить 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)
person Ashu    schedule 16.06.2021

Потребовалось много усилий, но в конце концов я нашел комбинацию флагов, которая работает в 2021 году!

Это указывает Chrome игнорировать все ошибки SSL, отключает сообщение Chrome контролируется программным обеспечением автоматического тестирования и запускается в полноэкранном режиме. Добавьте его в поле Target вашего ярлыка:

"C:\Program Files\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors --test-type=webdriver --start-fullscreen
person Loïc Joachim    schedule 08.04.2021