Zastanawiam się, czy ktokolwiek mógłby rozwinąć się w którejkolwiek z tych prób lub ma jakieś inne pomysły na uchwycenie błędów JS przy użyciu WebDriver, który będzie działał w Firefoksie, Chrome, Internet Explorerze i Safari.Złap błędy JavaScript w Selenium WebDriver - Niezależnie od przeglądarki
Oto co zostało próbowałem dotąd:
Próba - Problem:
JSErrorCollector.jar - Działa dobrze, ale to tylko Firefox rozwiązanie.
Inject JS do źródła strony - I wstrzykuje kod window.onerror
w kodzie źródłowym strony Korzystanie WebDriver, ale wszelkie początkowe błędy są pominięte, ponieważ wtrysk jest zbyt późno.
BrowserMob - mogę przechwycić odpowiedź HTTP i planuje wprowadzić kod do ciała reakcji window.onerror
, ale autor nie wdrożyła jeszcze metodę getBody()
, więc tylko nagłówki mogą być modyfikowane, że jestem świadomy. Ciało jest zawsze puste dla wszystkich odpowiedzi. (Byłem na stronie internetowej, gdzie autor opowiadał o wdrażaniu getBody()
ale to jeszcze nie stało i nie mogę go odnaleźć)
Skrzypek - JS wstrzyknie poprawnie, ale Skrzypek jest Windows tylko tak Safari nie będzie praca.
Okna rodzica/dziecka - Używam javascript do otwierania i przechowywania odniesienia do okna strony testowej. window.onerror code
znajduje się w oknie nadrzędnym, dzięki czemu nie ominie błędów uruchamiania w oknie podrzędnym. Nie mogę tego sprawić, żeby działał w czymkolwiek poza Firefoksem i Chome. Zadałem już pytanie na ten temat: here.
Selen RC - Nie próbowałem go, ponieważ wszystkie moje testy używać WebDriver, ale wiem, że ma jakieś metody jak captureNetworkTraffic()
, ale nie sądzę, może on być stosowany w WebDriver.
Wyskakujące okienka błędów IE - Zamierzałem użyć rozwiązania parent/child dla przeglądarki Firefox/Chrome, a następnie wyszukać komunikat o błędzie IE. To wyskakujące okienko wyświetla się, gdy ustawienie jest zaznaczone, aby je wyświetlić. Popup jest rodzimym oknem okna (chyba), więc nie mogę użyć selenu, aby uzyskać do niego dostęp.
Przeczytaj konsolę przeglądarki - Nie mogłem znaleźć tego sposobu we wszystkich przeglądarkach. W Chrome znalazłem sposób na zapisanie dziennika konsoli w pliku, a następnie odczytanie pliku. To tyle, ile mam.
Chciałbym rozwiązania podobnego do BrowserMob, ponieważ wydaje się, że byłoby to rozwiązanie z przeglądarki krzyżowej. Czy są jakieś inne proxy, które można umieścić w teście i przechwycić odpowiedź? Byłoby wspaniale, gdyby zaimplementowano metodę getBody()
. Podoba mi się również rozwiązanie parent/child, ponieważ wydaje się ono również prostym rozwiązaniem dla przeglądarki, ale nie działa dla IE (parent/child question again).
Dzięki za pomoc.
Z tego co wiem, wymieniłeś wszystkie możliwe obecnie dostępne rozwiązania (lipiec 2013, Selenium 2.33.0). [Zobacz oficjalny błąd Selenium, aby uzyskać więcej informacji.] (Http://code.google.com/p/selenium/issues/detail?id=148) Dopóki nie ma oficjalnego API, musisz użyć kombinacji tych rozwiązania lub prawdopodobnie napisać własny dodatek do przeglądarki dla każdej przeglądarki, którą potrzebujesz obsługiwać. –
Dzięki za link. – Ryan
Zdajesz sobie sprawę, że proxy BrowserMob to [open-source] (https://github.com/lightbody/browsermob-proxy), prawda? Co powstrzymuje Cię przed wdrożeniem brakującej funkcji i przesłaniem prośby o odłożenie? – JimEvans