Управление Chrome осуществляется с помощью автоматизированного тестового программного обеспечения

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

Мне пришлось загрузить новый ChromeDriver, потому что мои тесты не могли выполняться → Тест откроет ChromeDriver, но не сможет "Browse as user". Когда я googled проблема, они сказали, что мне нужно обновить ChromeDriver.

Итак, я обновил ChromeDriver до версии 2.28, а также обновил версию Chrome до версии 57.0.2987.98.

Но теперь - КАЖДЫЙ ВРЕМЯ Я запускаю свои тесты, этот раздражающий текст появляется:

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

И он спрашивает меня, хочу ли я сохранить пароль. (Я не могу добавить картинки, потому что у меня недостаточно "очков" )

В предыдущей версии мне удалось заблокировать эти 2 вещи:

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

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

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

Ответ 1

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

options.addArguments("disable-infobars");

Ответ 2

О появлении текста "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);

Надеюсь, что это сработает.

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

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

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

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

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

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

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

Ответ 6

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

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

Ответ 7

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

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

application_system_test_case.rb

Вы можете добавить "args" в опции driven_by следующим образом:

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

Ответ 9

Это работает для меня с помощью 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);

Ответ 10

Решение для проталкивателя:

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

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

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

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

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

Ответ 11

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

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

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