DarkNik
(DarkNik)
05.Апрель.2013 12:26:21
#1
Здравствуйте. Тестируемый сайт использует ненадежный SSL сертификат.
При открытии урла всплывает диалоговое окно выбора этого самого сертификата(Chrome, IE).
Может кто сталкивался с таким, как с помощью WebDriver выбрать нужный сертификат и зайти на сайт?
Используется VS2012 + WebDriver + NUnit
polusok
(Mykhailo Poliarush)
05.Апрель.2013 19:37:00
#2
для firefox
ProfilesIni allProfiles = new ProfilesIni();
System.setProperty("webdriver.firefox.profile","your custom firefox profile name");
String browserProfile = stem.getProperty("webdriver.firefox.profile");
FirefoxProfile profile = allProfiles.getProfile(browserProfile);
profile.setAcceptUntrustedCertificates (true);
webdriver = new FirefoxDriver(profile);
для chrome можно поставить switches, чтобы игнорировать такие ошибки
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("chrome.switches", Arrays.asList("--ignore-certificate-errors"));
driver = new ChromeDriver(capabilities);
для ie (http://sqa.stackexchange.com/questions/1928/problem-with-ie9-security-certificate-when-accessing-https-urls-using-selenium-2 )
webDriver.navigate().to("javascript:document.getElementById('overridelink').click()");
для opera
DesiredCapabilities capabilities = DesiredCapabilities . opera ();
capabilities . setCapability ( "opera.profile" , new OperaProfile ( "/path/to/existing/profile" ));
capabilities . setCapability ( CapabilityType . ACCEPT_SSL_CERTS , true );
WebDriver driver = new OperaDriver ( capabilities );
2 лайка
Funker
(Funker)
23.Апрель.2013 20:06:28
#3
Спасибо! Мне тоже как раз эта инфа нужна была, здесь все в одном месте собрано :)))
Спасибо
Kseniya
(Kseniya)
02.Май.2013 12:16:41
#4
Спасибо! Мне тоже это нужно.
А не подскажете, что делать дальше?
У меня открывается окошко, в котором надо выбрать сертификат из нескольких имеющихся. Как это можно сделать?
Насколько я поняла, Селениум с такими окошками работать не умеет. Пробовала имитировать нажатие кнопок через Windows Forms - не получается.
asolntsev
(asolntsev)
02.Май.2013 18:35:21
#5
Попробуйте подойти к проблеме с другого конца.
Зачем тестировать приложение на https?
Тестируйте его на http! Мы обычно запускаем наш приложение на http://localhost:8080 и там прогоняем все тесты.
Kseniya
(Kseniya)
02.Май.2013 19:20:55
#6
Затем, что сертификаты - неотъемлемая часть приложения :) А http и https у нас - принципиально разные приложения.
Так что с другого конца не получится.
На самом деле, уже разобралась, как делать.
polusok
(Mykhailo Poliarush)
03.Май.2013 09:00:09
#7
ну если разобрались как сделать, напишите решение, чтобы другие тоже увидели, на будущее
freshment
(freshment)
03.Май.2013 11:21:03
#8
Напишите, пожалуйста, решение проблемы!
Kseniya
(Kseniya)
04.Май.2013 06:39:48
#9
Я сделала так: сначала переключилась на диалоговое окно с помощью команды Alert:
IAlert alert = driver.SwitchTo().Alert();
Переключаться пришлось 2 раза, т.к. сначала всплывает окошко типа "Подождите", а потом уже со списком сертификатов.
А потом в этом окне с помощью методов из System.Windows.Forms стрелками вниз выбирала нужный сертификат.
SendKeys.SendWait("{DOWN}");
SendKeys.SendWait("{ENTER}");
Способ не универсальный, т.к. в общем случае не известно, каким по счету будет нужный сертификат, но мне пока подходит.
Если кто придумает более общий способ - пишите :)
zevoff
(Vladimir Zuy)
24.Март.2014 15:32:41
#10
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("chrome.switches", Arrays.asList("--ignore-certificate-errors"));
driver = new ChromeDriver(capabilities);
после этих команд всё равно запрашивает подтверждение сертификата на хроме, язык ява
zevoff
(Vladimir Zuy)
24.Март.2014 15:39:43
#11
что нужно писать после этого метода?
Alert alert = driver.switchTo().alert();
так как > SendKeys.SendWait("{ENTER}"); SendWait is undefined for the type SendKeys
st_eremin
(Stan)
31.Октябрь.2014 10:10:56
#12
Правильное решение, на которое никто так и не ответил - передача флага --test-types в DesiredCapabilities
arturk
(Artur Korobeynyk)
31.Октябрь.2014 10:16:16
#13
А почему просто не добавить сертификат в доверенные рут на тестовой машине? Он ведь selfsigned вашим сервером и доверие к нему есть
ArtOfLife
(Sergey Korol)
31.Октябрь.2014 12:26:09
#14
--test-types
флаг добавлен в 35 версии хрома, которая вышла в апреле 2014. А теперь обратите внимание на дату поста. К тому же, автор спрашивал и за IE, а не только хром.
komarov134
(Komarov134)
02.Апрель.2015 11:44:58
#15
Возник такой вопрос. А что если драйвер кликает на элемент на странице(для которой уже разобрались как принимать ненадежные сертификаты), но клик на этот элемент инициирует(внутри с помощью js) вызов метода какого-то апи. Этот метод - это пост метод, у которого (пусть) request url https://a.test.ru/method . При попытке в браузере перейти по этому адресу возникает такая же ошибка по поводу ненадежного сертификата. Вопрос вот в чем: могу я быть уверен, что выставление флажков в профиле вебдрайвера на принятие ненадежных сертификатов гарантирует мне принятие сертификатов и при неявном обращении к ресурсам, у которых ненадежные сертификаты? спасибо!
Ответьте пожалуйста подробнее. как передать этот флаг?
Решить вопрос сертификата , в случае WIN OS можно через реестр.
Пример для хрома
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\AutoSelectCertificateForUrls]
"1"="{\"pattern\":\"YoursiteURL\",\"filter\":{}}"
"2"="{\"pattern\":\"YoursiteURL/*\",\"filter\":{}}"
1 лайк
asolntsev
(asolntsev)
16.Ноябрь.2016 20:07:38
#18
Слушайте, пора уже прекращать эти разговоры про ненадёжные сертификаты.
Регистрируйте это как баг, пусть админы настроят надёжный сертификат.
В наше время это делается легко и бесплатно. Например, утилита “letsencrypt” позволяет легко это делать.
1 лайк
Это вы просто в корпорациях не работали. некоторые вещи - непреодолимая боль которую нужно принять.
1 лайк
asolntsev
(asolntsev)
17.Ноябрь.2016 15:21:32
#20
Очень даже работал.
И прекрасно понимаю, что ещё пару лет назад добиться от админов нормальных сертификатов было бы нереально.
Но сегодня - другое дело.
Я ж поэтому и дал ссылку: сегодня эта проблема легко решается.