При тестировании веб-приложений, использующих защищенное https соединение, Вы можете столкнуться с ошибками сертификатов при работе с некоторыми веб-драйверами, в частности, с InternetExplorerDriver. Если существует какая-либо проблема с сертификатом, Вы увидите оповещение «Это соединение является недоверенным». Как и в случае с диалоговыми окнами, при появлении такого сообщения работа веб-драйвера с элементами страницы полностью блокируется и продолжать тестирование ресурса дальше просто невозможно.
FirefoxDriver и ChromeDriver
На сегодняшний день FirefoxDriver и ChromeDriver (selenium 2.37.1) автоматически принимают все сертификаты по-умолчанию и не выводят оповещений, поэтому никаких дополнительных настроек при работе с ними не требуется. Однако такое поведение для FirefoxDriver уже отмечено как @Deprecated
и возможно в скором времени предупреждения сертификатов безопасности будут обрабатываться иначе.
// Accept untrusted SSL certificates. @Deprecated public static final boolean ACCEPT_UNTRUSTED_CERTIFICATES = true;
В любом случае, приведу примеры того как управлять автоматическим приемом сертификатов, возможно, Вам это пригодится для более ранних версий драйвера или наоборот понадобится это отключить.
- Для FirefoxDriver:
DesiredCapabilities capability = DesiredCapabilities.firefox(); capability.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); driver = new FirefoxDriver(capability);
или
FirefoxProfile profile = new FirefoxProfile(); profile.setAcceptUntrustedCertificates(true); driver = new FirefoxDriver(profile);
- Для ChromeDriver:
ChromeOptions options = new ChromeOptions(); options.addArguments("--ignore-certificate-errors"); driver = new ChromeDriver(options);
В текущей реализации chromedriver.exe опция «—ignore-certificate-errors» передается браузеру по-умолчанию во время инициализации. Для того, чтобы эту функцию отключить можно выполнить следующее (для chromedriver.exe версии не ниже 2.7):
ChromeOptions options = new ChromeOptions(); options.setExperimentalOptions("excludeSwitches", Arrays.asList("ignore-certificate-errors")); driver = new ChromeDriver(options);
Использование
ExperimentalOptions
является временным решением, потому как в скором времени должна выйти полноценная поддержкаexcludeSwitches
вChromeOptions
.
Internet Explorer
В случае с Internet Explorer вариант с установкой DesiredCapabilities ACCEPT_SSL_CERTS
для тестирования не работает. Для IE нельзя временно поменять расширенные параметры, они задаются навсегда. Изменять их приходится вручную еще до начала тестирования. Но я настоятельно рекомендую не понижать настройки безопасности в IE. После смены настроек, факт их изменения обычно забывается и в результате остается машина с неверно сконфигурированным SSL/TSL в IE.
Для того, чтобы продолжить тестирование в IE после вывода такого предупреждения, нам нужно просто кликнуть по ссылке Continue to this website (not recommended), ее id = «overridelink». Но проблема в том, что после появления этого окна работа InternetExplorerDriver частично заблокирована и мы не можем выполнить обычный click()
на элементе. Поэтому для нажатия на ссылку можно использовать javascript:
driver.get("javascript:document.getElementById('overridelink').click();");
Здравствуйте, подскажите, как бороться с сообщением о «Предупреждении о безопасности» после после клика на «Продолжить открытие этого веб-узла (не рекомендуется)», Если в сообщении сразу активна кнопка нет (((
Какая версия IE и какое именно сообщение? У меня, к сожалению, не получается это воспроизвести, никаких сообщений после нажатия на «Продолжить» больше нет.
Правильно: setExperimentalOption, у вас
setExperimentalOptions