Czy istnieje sposób na wychwycenie błędów występujących w programie DOM
in Selenium
i prawdopodobnie oznaczenie tego samego, co błąd na stronie?
Aby dać krótki przykład, powiedzmy, że próbuję powiązać zdarzenie z nieistniejącą kontrolką HTML, moja przeglądarka zgłasza błąd:
element abcd not found in the console.
Teraz, jeśli chcę, aby ten sam błąd nie przeszedł moich testów selenu, a komunikat wyświetlany w przeglądarce jest wyświetlany jako komunikat o błędzie.
Czy można coś takiego zrobić?
selenium
selenium-rc
Baz1nga
źródło
źródło
Odpowiedzi:
Umieść ten skrypt na swojej stronie, a następnie sprawdź w Selenium pod kątem JSError:
źródło
document.body.setAttribute("JSError", msg)
zamiast polegać na jQueryRobię to, aby wychwycić błędy JavaScript:
źródło
Nie jestem pewien, kiedy to się zmieniło, ale teraz działa to dla mnie w Pythonie. Plik jest prostą stroną z błędem JavaScript.
Python-Selenium w wersji 2.48.0 Linux Firefox 43.0
źródło
driver.log("browser").then(function(results){ console.log(results.value); }
Oto rozwiązanie webdriver w Pythonie, którego używam:
źródło
JSErrorCollector wykonuje zadanie.
Po skonfigurowaniu jest to kwestia:
źródło
Nie-
window.onerror
rozwiązanie -na (nie próbowałem): http://sejq.blogspot.com/2008/12/can-selenium-detect-if-page-has.htmlźródło
Chciałbym powtórzyć odpowiedź jhanifen. Oto rozwiązanie javascript, które nie zależy od jQuery. Tworzy niewidoczną listę HTML na dole strony, która zawiera błędy.
źródło
Rozwiązanie z "window.onerror" nie działa dla mnie.
Dlatego chciałbym wskazać inne rozwiązanie ze zmianą user-extensions.js, które pomogło mi:
Czy Selenium może wykryć, czy strona zawiera błędy JavaScript?
Główna zaleta: nie musisz zmieniać źródła strony, aby sprawdzić.
A oto jak używać user-extensions.js: Używanie rozszerzeń
użytkownika z Selenium-IDE
Uwaga: to rozwiązanie działa tylko z przeglądarką Firefox
źródło
Oto moje rozwiązanie inspirowane odpowiedzią jhanifena:
źródło
Jeśli używasz javy, zapraszam do wypróbowania tej stworzonej przeze mnie biblioteki , która pozwala w prosty sposób zbierać błędy JS otrzymane w sesji Chromedriver, używając adnotacji na metodach testowych. Działa na JUnit5 z rozszerzoną adnotacją i na TestNG z odbiornikiem analizującym adnotację. Adnotacja zawiera wartości logiczne, które pozwalają zdecydować, czy po wykonaniu testu chcesz potwierdzić, czy zapisać znalezione błędy.
Przykład JUnit5:
źródło
TestCase.tearDown()
W moich testach Python Selenium używam następujących elementów , które powodują niepowodzenie testu w przypadku błędów JavaScript:Jest to inspirowane odpowiedziami @kleptog i @ d3ming.
źródło
Spróbuj uwzględnić zdarzenie windows.onerror na swojej stronie lub włączyć okno dialogowe błędu w opcjach IE. Jeśli wybierzesz później w Se1 zawiesi się. PS: Zostało to omówione tutaj. Wyszukaj.
źródło