Обработка "выбрать цифровой сертификат" с 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.