Ответ 1
Я нашел ответ на плате SQA: https://sqa.stackexchange.com/questions/1928/selenium-2-webdriver-and-ie-9-security-certificate
Мы создали сертификат, и он работал как шарм.
У меня есть некоторые тестовые примеры 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 (или любой другой прокси-сервер) для решения этой проблемы?
Спасибо, Дамо
Я нашел ответ на плате SQA: https://sqa.stackexchange.com/questions/1928/selenium-2-webdriver-and-ie-9-security-certificate
Мы создали сертификат, и он работал как шарм.
Хорошо, я только что начал работать в 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();");
Использование привязок Selenium-Python:
#region SSL workaround for IE
if "Certificate Error" in driver.title:
driver.get("javascript:document.getElementById('overridelink').click();")
Это работало для меня в прошлом, дайте ему попробовать,
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
Webdriver driver = new InternetExplorerDriver(capabilities);
Любая прогессия в этом? Я пытаюсь сделать эту возможность возможностей... но я не знаю, как это сделать с помощью Ruby: (
В chrome это просто, поскольку вы можете использовать переключатели:
nav=Selenium::WebDriver.for(:chrome, :switches => %w[--ignore-certificate-errors -])
Возможно, это можно сделать для IE с помощью переключателей
существует гораздо более простое решение, если вы используете IE-драйвер, задокументированный в этом ответе. Дополнительным преимуществом является то, что вам не обязательно быть владельцем сайта, и вам не нужно путаться с браузером или реестром или любой другой низкоуровневой технологией.
Мы можем использовать следующий код.
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();
Другие ответы имеют правильную идею, но на практике не работают, потому что WebDriver
не перемещается сразу на страницу с ошибкой сертификата. Правильная реализация должна немного подождать.
new WebDriverWait(driver, 10).until(ExpectedConditions.titleContains("Certificate"));
driver.navigate().to("javascript:document.getElementById('overridelink').click()");