Ответ 1
Добавьте это к параметрам, которые вы передаете драйверу:
options.addArguments("disable-infobars");
Я запускаю автоматические тесты в 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;
}
}
Я знаю, что есть эта (ссылка на ту же тему), но слишком много ответов, которые не работают.
Кто знает, как удалить это?
Добавьте это к параметрам, которые вы передаете драйверу:
options.addArguments("disable-infobars");
О появлении текста "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);
Надеюсь, что это сработает.
Пусть кому-то это понадобится для Капибары, Ватир должен быть таким:
Capybara.register_driver :chrome do |app|
$driver = Capybara::Selenium::Driver.new(app, {:browser => :chrome, :args => [ "--disable-infobars" ]})
end
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("useAutomationExtension", false);
options.setExperimentalOption("excludeSwitches",Collections.singletonList("enable-automation"));
WebDriver driver = new ChromeDriver(options);
Используйте приведенные выше коды для последних версий драйверов Chrome.
В то время как маршрут 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, поэтому мы посмотрим, и я попытаюсь вернуться сюда, если у меня получится разрешение.
Переключатель "disable-info" больше не поддерживается для последних версий chromedriver. (минимум 76.0).
@Rajeev ответ работает, и здесь я пишу аналог для С#.
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.AddAdditionalOption("useAutomationExtension", false);
chromeOptions.AddExcludedArgument("enable-automation");
Driver = new ChromeDriver(chromeOptions);
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");
Если кто-то использует 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"] }
Это работает для меня с помощью 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);
Решение для проталкивателя:
Я приехал сюда, ища решение Protractor, если оно полезно для всех, кого я нашел, с помощью приведенных выше ответов; с помощью Protractor вы можете добавить специальные функции Chrome для объекта chromeOptions, в рамках объекта возможностей в файле protractor.config, например, чтобы использовать опцию disable-infobars, описанную выше, используйте следующее:
capabilities: {
'browserName': 'chrome',
'chromeOptions': {
'args': ['disable-infobars']
}
},
Чтобы использовать автоматизацию включения, также обсуждаемую выше:
capabilities: {
'browserName': 'chrome',
'chromeOptions': {
'excludeSwitches': ['enable-automation']
}
}
disable-infobars предпочтительнее в моих обстоятельствах.
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;
}
Вы можете использовать это
options1.add_argument("--app=https://www.google.com.ph")