Selenium 2 Webdriver и IE 9 Сертификат безопасности - PullRequest
22 голосов
/ 10 октября 2011

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

Получение Selenium для нажатия на «Перейти на этот сайт (не рекомендуется)». ссылка на сайт. Это не может быть сделано, так как эта страница ошибок не является вашей обычной страницей. То же самое с JavaScript - он не выполняется. Я попытался добавить раздел реестра
HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Internet Explorer \ MAIN \ FeatureControl \ FEATURE_ERROR_PAGE_BYPASS_ZONE_CHECK_FOR_HTTPS_KB954312
, из-за которого не отображается сертификат - ошибка не выдает сертификат - из-за ошибки сертификат не отображается - сертификат не выводит сертификат - из-за ошибки - 1006 **1007*, из-за которой не отображается сертификат - ошибка не выдает сертификат - из-за ошибки сертификата - сертификат не мешает отображению сертификата - из-за ошибки сертификат не отображается из-за ошибки сертификата , Возможно, потому что я на Windows 7 с IE9. Следуя этому совету, я попытался использовать прокси-сервер browsermob, но там очень мало документации, и я не смог ее решить.

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

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

Спасибо, Дам

Ответы [ 8 ]

26 голосов
/ 20 июля 2012

Хорошо, я только что начал работать под IE9, используя C # и следующий код:

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();");
4 голосов
/ 02 сентября 2014

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

#region SSL workaround for IE
if "Certificate Error" in driver.title:
    driver.get("javascript:document.getElementById('overridelink').click();")
3 голосов
/ 28 ноября 2011

Я нашел ответ на доске SQA: https://sqa.stackexchange.com/questions/1928/selenium-2-webdriver-and-ie-9-security-certificate

Мы создали сертификат, и он работал как шарм.

2 голосов
/ 12 октября 2011

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

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);      
Webdriver driver = new InternetExplorerDriver(capabilities);
0 голосов
/ 13 июня 2016

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

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


driver.navigate().to("javascript:document.getElementById('overridelink').click()");
0 голосов
/ 19 августа 2014

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

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();
0 голосов
/ 01 октября 2013

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

0 голосов
/ 21 октября 2011

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

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

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

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

...