2013-02-19 10 views
7

Po otwarciu strony z selenowym webdriverem otrzymuję okno dialogowe "Wybierz certyfikat". Domyślny certyfikat jest właściwy, więc muszę tylko kliknąć przycisk OK. Ale mam z tym problem. Mam kodu Pythona:Obsługa "wybierz cyfrowy certyfikat" z selenowym korkiem Webdriver

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

a potem chcę zrobić coś takiego:

drv.switch_to_alert().accept() 

lub

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

Problemem jest to, że kod przestaje wykonywanie linia drv.get ("https://example.com/login"). Webdriver czeka na załadowanie strony. A przed tą linią nie ma żadnego okna dialogowego z chromem.

Jak mogę sobie z tym poradzić?

Odpowiedz

3

Będziesz musiał użyć czegoś jak Auto:

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

Dlaczego pytasz? Jest to okno systemu operacyjnego, którego Selenium prawdopodobnie nigdy nie będzie obsługiwać, więc będziesz musiał skorzystać z innych rozwiązań (w języku C# powinieneś użyć natywnych metod Win32 API do kliknięcia przycisku na przykład).

+1

i co robisz w systemie Linux? –

1

Certyfikaty są zarządzane przez system operacyjny, a nie przeglądarkę. Usuń wszystkie wymagane certyfikaty z magazynu certyfikatów przeglądarki, a następnie skonfiguruj przeglądarkę tak, aby automatycznie wybierała certyfikat, gdy obecny jest tylko jeden certyfikat. Możesz również utworzyć profil przeglądarki i uruchomić swój profil przez ten program lub uniknąć testowania przez HTTPS.

+2

jak skonfigurować chrome, aby zaakceptować domyślny certyfikat bez pytania? –

1

zanim zajmiesz się tutaj cokolwiek, dodaj poniżej, aby nie zamarło, gdy tylko przejdziesz/wyskoczysz, pojawi się certyfikat. Pamiętaj, aby dodać prawidłowy czas oczekiwania później.

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

po tym możesz wypróbować za pomocą klawiatury lub autoIt cokolwiek.