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>
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. –
@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