Подтвердить что ты не робот

Selenium 2 Webdriver и сертификат безопасности IE 9

У меня есть некоторые тестовые примеры Selenium 2 Webdriver для Firefox и Internet Explorer 9. Когда я получаю URL-адреса https на IE9 (64-разрядная версия Windows 7), я получаю "Проблема с этим сертификатом безопасности веб-сайта". На этом этапе тест зависает и в конечном итоге терпит неудачу. Я пытался:

Получение Selenium для нажатия на кнопку "Продолжить на этом сайте (не рекомендуется)". ссылка. Это невозможно сделать, так как эта страница ошибки не является вашей обычной страницей. То же самое с JavaScript - он не выполняется. Я попробовал добавить раздел реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_ERROR_PAGE_BYPASS_ZONE_CHECK_FOR_HTTPS_KB954312, который предотвращает страница с сертификатом-ошибкой - не работает. Вероятно, потому что я нахожусь в Windows 7 с IE9. Следуя этот совет, я пробовал использовать прокси-сервер browsermob, но там очень мало документации, и я не мог это обработать.

Наконец, у меня нет доступа администратора к моему компьютеру - например. нет доступа к групповым политикам. Selenium 2 Webdriver отлично работает в Firefox. У меня есть все зоны безопасности, включенные в IE Internet Options, и если я запускаю тесты на других URL (http), то проблем нет.

У кого-нибудь есть решение этой проблемы? Кто-нибудь теперь горячо использовать прокси-сервер browsermob (или любой другой прокси-сервер) для решения этой проблемы?

Спасибо, Дамо

4b9b3361

Ответ 2

Хорошо, я только что начал работать в IE9 с помощью С# и следующего кода:

IWebDriver driver = new InternetExplorerDriver();
driver.Url(YOUR_URL);
driver.Navigate().GoToUrl("javascript:document.getElementById('overridelink').click()");

И теперь он перейдет на страницу. Для Java это просто:

WebDriver driver = new InternetExplorerDriver();
driver.get(YOUR_URL);
driver.get("javascript:document.getElementById('overridelink').click();");

Ответ 3

Использование привязок Selenium-Python:

#region SSL workaround for IE
if "Certificate Error" in driver.title:
    driver.get("javascript:document.getElementById('overridelink').click();")

Ответ 4

Это работало для меня в прошлом, дайте ему попробовать,

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);      
Webdriver driver = new InternetExplorerDriver(capabilities);

Ответ 5

Любая прогессия в этом? Я пытаюсь сделать эту возможность возможностей... но я не знаю, как это сделать с помощью Ruby: (

В chrome это просто, поскольку вы можете использовать переключатели:

nav=Selenium::WebDriver.for(:chrome, :switches => %w[--ignore-certificate-errors -])

Возможно, это можно сделать для IE с помощью переключателей

Ответ 6

существует гораздо более простое решение, если вы используете IE-драйвер, задокументированный в этом ответе. Дополнительным преимуществом является то, что вам не обязательно быть владельцем сайта, и вам не нужно путаться с браузером или реестром или любой другой низкоуровневой технологией.

Ответ 7

Мы можем использовать следующий код.

wait =new WebDriverWait(webdriver, 10);

webdriver.get(url);
WebElement ele =wait.until(ExpectedConditions.elementToBeClickable(
               webdriver.findElement(By.linkText("Continue to this website (not  
               recommended)."))));
 ele.click();

Ответ 8

Другие ответы имеют правильную идею, но на практике не работают, потому что WebDriver не перемещается сразу на страницу с ошибкой сертификата. Правильная реализация должна немного подождать.

new WebDriverWait(driver, 10).until(ExpectedConditions.titleContains("Certificate"));


driver.navigate().to("javascript:document.getElementById('overridelink').click()");