2013-02-19 18 views
23

Obecnie próbuję zbudować mały zestaw testowy dla CI (Hudson). Napisałem złożony skrypt, który dynamicznie wywołuje inne Skrypty i zapełnia dany element DIV.Alternatywa dla PhantomJS do testowania

moich testów Selenium pracować dla trywialnych przykładów (www.google.com obciążenia, poszukiwania q-Element, etc.)

ale gdy próbuję uruchomić kompleksowy test, który działa z Firefox-driver w mojej instancji PhantomJS zawiesza się. Wystąpił błąd segfault.

Moje pytanie brzmi, w jaki sposób mogę napisać testy dla mojego JS frontendu, który działa na serwerze Hudson, który działa (bezgłowy).

Czy istnieje sposób debugowania, co powoduje błąd?

+0

Jednym ze sposobów symulacji bezgłosu jest uruchomienie przeglądarki na zdalnej sieci, takiej jak SauceLabs. W ten sposób nie musisz martwić się bezgłowym chromem lub phantomjs. Ale wadą jest to, że wydajność jest wolniejsza i potrzebujesz połączenia poza twoją siecią (chyba że uruchamiasz lokalnie dokowane stanowisko sieciowe). – djangofan

Odpowiedz

14

Instalacje bezgłowe są możliwe w przypadku korzystania z Xvfb jako wirtualnego bufora ramki (na komputerach z systemem Linux obsługujących węzły siatki). Skończyło się używanie tej i domyślnej przeglądarki Firefox.

9

Phantom to produkt ewoluujący, a stosunkowo niedawno zyskał możliwość integracji z Selenium, więc być może trafiłeś w błąd; czy próbowałeś zgłosić to do twórców Phantom?

  • Alternatywy Phantom:

    Nie ma wielu. Zombie to taki, który znam, ale Phantom jest głową ponad innymi przeglądarkami bezgłowymi.

    Można również spróbować użyć wirtualnego serwera bez linii sterujących, aby uruchomić dowolną ze zwykłych przeglądarek internetowych. (Byłoby to również tę zaletę, że jest bardziej prawdziwy test trwałości niż Phantom)

  • Alternatywy dla Selen:

    można użyć Sahi jako bezpośredni zamiennik dla selenu. Jest zdolny do tych samych rzeczy, ale działa zupełnie inaczej. Oczywiście konieczne będzie przepisanie skryptów testowych.

    Phantom został napisany w taki sposób, że nie wymaga użycia narzędzia do obsługi sterowników, takiego jak Selenium; możesz po prostu napisać skrypt bezpośrednio lub użyć narzędzia takiego jak CasperJS, aby napisać swoje skrypty testowe.

+0

Problemem nie jest selen, to Phantom JS (problem z iframe). Nie wiem, czy Zombie by działało, ale i tak nie jest to opcja, ponieważ używam siatki Selenium i potrzebuję możliwości wstawienia węzłów np. Testowanie IE. – schlingel

14

Slimer.js jest podobny do Phantom.js, ale używa Gecko zamiast Webkita.

http://slimerjs.org/

+0

SlimerJS nie obsługuje programu Webdriver .. – user3060326

+5

Od tego pisania. To jeszcze nie jest naprawdę bezgłowe. – chriz

+0

Działa świetnie. Nie ma błędu, z którym miałem do czynienia PhantomJS – user1079877

6

jsdom jest dobrą alternatywą teraz, jego dość dojrzały.

https://github.com/tmpvar/jsdom/

Its do testowania bez głowy. Nie sądzę, że zrobi zrzuty ekranowe, takie jak phantomjs, ponieważ nie ma żadnego webkita lub gekko renderującego jego czystego JS.

Znalazłem to od phantomjs segfaults i nowa wersja nie będzie budować. slimerjs nie jest tak naprawdę bezgłowy, a oparty na XULRunner, który FireFox właśnie porzucił, nie działa z moim obecnym FF.

jsdom jest całkiem fajny, zaczął działać jako parser XML, a teraz ma pełne wsparcie sieciowe i obsługę jQuery.

API to nie to samo co phantomjs.

+0

Interesujące. Popatrzę na to. – schlingel