WebDriver и SSL Untrusted certificate
При тестировании веб-приложений, использующих защищенное 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;
В любом случае, приведу примеры того как управлять автоматическим приемом сертификатов, возможно, Вам это пригодится для более ранних версий драйвера или наоборот понадобится это отключить.
1. Для 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);
2. Для 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();");