2015-02-08 12 views
6

Używam podstawowych testów CRUD z pythonem i sałatą za pomocą selenu webdriver.Python Selenium NiespodziewanyAlertPresentException

Wszystkie moje inne testy przebiegają dobrze, ale kiedy kliknę "Usuń", istnieje modalne okno dialogowe, które prosi użytkownika o potwierdzenie, że chce usunąć tego użytkownika. W momencie, gdy pojawi się wyskakujące okienko, otrzymuję wyjątek poniżej. Zmarnowałem 2 godziny próbując zmusić to do działania. Wyobrażam sobie, że jest prosta naprawa.

File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 164, in check_response 
    raise exception_class(message, screen, stacktrace) 
UnexpectedAlertPresentException: Message: u'Modal dialog present' ; Stacktrace: 
    at nsCommandProcessor.prototype.execute (file:///tmp/tmpeV2K89/extensions/[email protected]/components/command_processor.js:11520:13) 

Wiersz w pliku steps.py, który rzuca błąd, jest następujący.

world.browser.find_element_by_link_text("Delete User").click() 

I html dla tego elementu jest to.

<a href="https://stackoverflow.com/users/5910974510923776/delete" onclick="return confirm('Are you sure you want to delete this user?');">Delete User</a> 
+0

Jeśli jej alert zastosowanie (jak w Javie) 'd.switchTo() alert() zaakceptować();' (proszę znaleźć równoważne powiązanie w pythonie). Jeśli jest to modalne okno dialogowe, to zgaduję, że możesz spróbować znaleźć lokalizator ok. –

+0

@VivekSingh to po prostu 'driver.switch_to_alert.accept()' lub nawet 'driver.switch_to.alert.accept()'. Zauważyłem niewielkie różnice w obu mehodach, więc uważam, że ważne jest, aby doradzić każdemu, kto się wokół tego zmaga. To samo dotyczy metody 'driver.switch_to.window()'. – erm3nda

Odpowiedz

10

Trzeba switch to the alert i przyjmuję je..

world.browser.find_element_by_link_text("Delete User").click() 
alert = world.browser.switch_to.alert 
alert.accept() 
+0

To nie pozwala mi dostać się do world.browser.switch_to_alert(). Próbowałem tego, nie działa już na linii i nie wyjdzie poza to. – andygimma

+0

@andygimma, więc wygląda na to, że jest alert otwarty przed kliknięciem przycisku Usuń użytkownika. – alecxe

+0

Miałem literówkę, twoja odpowiedź była poprawna. Nie mam jednak wystarczającej liczby punktów reputacji, by cię upomnieć. Dzięki! – andygimma

Powiązane problemy