Обработка "выбрать цифровой сертификат" с selenium WebDriver chrome

когда я открываю страницу с selenium webdriver, я получаю диалоговое окно chrome "выбрать сертификат". Сертификат по умолчанию является правильным, поэтому мне нужно только нажать кнопку OK. Но у меня с этим проблемы. У меня есть код python:

drv = webdriver.Chrome()   
drv.get("https://example.com/login")

и после этого я хочу сделать что-то вроде:

drv.switch_to_alert().accept()

или

drv.switch_to_alert().send_keys(Keys.TAB)
drv.switch_to_alert().send_keys(Keys.SPACE)

проблема в том, что код перестает выполняться в строке drv.получить ("https://example.com/login"). Webdriver ждет страницы, чтобы нагрузка. И перед этой строкой нет диалогового окна chrome.

как я могу справиться с этим?

3 ответов


вам придется использовать что-то вроде AutoIT:

http://www.autoitscript.com/site/autoit/

Почему вы спрашиваете? Это диалог ОС, который Selenium не обрабатывает и, вероятно, никогда не будет обрабатывать, поэтому вам придется обратиться к другим решениям (например, в C# вы должны использовать собственные методы Win32 API для нажатия кнопки).


прежде чем обрабатывать что-либо здесь, добавьте ниже, чтобы он не застыл, как только вы перейдете/запустите всплывающее окно сертификата. remeber, чтобы добавить правильное время ожидания позже.

 getDriver().manage().timeouts().pageLoadTimeout(1000, TimeUnit.MILLISECONDS); 

после этого вы можете попробовать использовать клавиатуру или autoIt.


сертификаты управляются ОС, а не браузером. Удалите все сертификаты, кроме необходимого, из хранилища сертификатов браузера, а затем настройте браузер для автоматического выбора сертификата при наличии только одного сертификата. Вы также можете создать профиль браузера и запустить этот профиль или избежать тестирования по HTTPS.