2009-03-24 12 views

Odpowiedz

7

Kilka razy odpowiedziałem na to pytanie w StackOverflow. Wyszukaj moje poprzednie odpowiedzi, aby je wykopać. Klucz, który musisz napisać niestandardowy kod Java, który rozszerza ProxyHandler i SeleniumServer. Musisz również użyć wydania AFTER 1.0 beta 2.

Jeśli chodzi o ludzi, którzy pytają o numer , dlaczego chcesz tego dokonać: jest wiele powodów. W moim przypadku testujemy ciężką aplikację AJAX, a gdy coś pójdzie nie tak, jedną z pierwszych rzeczy, które debugujemy, jest przewód sieciowy. Pomoże nam to sprawdzić, czy nastąpiło wywołanie AJAX, a jeśli tak, to jaka była reakcja.W rzeczywistości zautomatyzowaliśmy zbieranie tych informacji i przechwyciliśmy je (wraz z zrzutem ekranu) z każdym testem Selenium.

+0

Zaznaczam tę odpowiedź jako tę, którą lubię, ponieważ w rzeczywistości rozwiązuje ona mój problem. :) Mamy powody, dla których chcemy sprawdzić również nagłówki. Zgadzam się z powyższymi postami, ale jest to bardzo przydatne dla nas, aby dostać się do nagłówków. – globulus

+0

Cóż, skoro to sam Pan Selenium, nie można się spierać;). Wiedziałem, że możesz również rozszerzyć klasy Java na serwerze. –

+2

Przeszukałem twoje odpowiedzi i nie mogę znaleźć tego, do którego się odnosisz. Jaka była to odpowiedź? Czy masz kilka przykładów rozszerzenia tych dwóch klas Java? – nzpcmad

1

To, co zrobiłem, aby obsłużyć to przy użyciu Selenium (nie Selenium RC), to przekonwertować testy HTML na JSP, a następnie wykorzystać Javę tam, gdzie jest to potrzebne do czytania nagłówków lub robić rzeczy, których JavaScript (selen to tylko Javascript) nie może zrobić .

Być może mógłbyś podać kilka szczegółów na temat tego, jak planujesz używać Selenium?

+0

Używam sterownika Ruby dla Selenium RC. Nie jestem pewien, czy podążam za tym, co masz na myśli, mówiąc o konwersji testów HTML na JSP. Witryna, którą testuję, jest napisana w .Net, chociaż nie mogę sobie wyobrazić, że to by zmieniło podejście. A więc jest sposób na przechwycenie nagłówków? – globulus

3

Nie użyłbym Selenium do tego typu testu i sugeruję, aby rozwiązać różne problemy z testowaniem za pomocą różnych narzędzi. co możemy zrobić, to:

  • testy Wykorzystanie jednostek do kodu testu: metody i klasy

  • testy integracyjne, aby sprawdzić, jak komponenty aplikacji powiesić razem

  • Prosty test funkcjonalny ramy jak Canoo WebTest (lub odpowiednik), aby potwierdzić takie nagłówki jak cache Http, podstawową strukturę strony, proste przekierowanie i ustawienia/wartości cookie

  • Indywidualne testy w celu zapewnienia ważności stron Standardy W3C

  • JSunit przetestować klasy i metody stworzone

  • Selen przetestować UI funkcjonalności/zachowanie Javascript oraz integrację JavaScript na tych stronach

Warto spędzać czas wyrwanie odpowiedzialność za testowanie różnych aspektów systemu przy użyciu tych różnych narzędzi, ponieważ używanie tylko Selenu może powodować problemy:

  • Im większy zestaw, tym wolniej działają. Rzeczywiście Selen jest z natury mniejsza w porównaniu do innych narzędzi wymienionych
  • Obsługuje ZACHOWANIE/testowanie funkcjonalne dobrze, ale mimo wszystko XPaths mogą być kruche i mogą wymagać zwiększenia ilości czasu i wysiłku, aby utrzymać
  • Zazwyczaj wymaga konfiguracji „jak-gdyby -real-life” dane z aplikacji do wejścia przez użytkownika scenariuszami (który może być brudny i zabiera dużo czasu)

Istnieją również pewne techniki - które mogą lub nie mogą natknąć - co możesz użyć do wykonania testów Selenium more resilient.

7

Funkcja API captureNetworkTraffic() w DefaultSelenium przechwytuje nagłówki żądania/odpowiedzi http i umożliwia dostęp do nich w formacie html/xml/plain.

Oto przykładowy kod:

Selenium s = new DefaultSelenium(...); 
s.start("captureNetworkTraffic=true"); 
s.open("http://www.google.com"); 
String xml = s.captureNetworkTraffic("xml"); // html, plain 
s.stop(); 
+1

ta metoda nie jest obsługiwana w selen 2 .. otrzymuję 'java.lang.UnsupportedOperationException: captureNetworkTraffic' –

1

Wydaje mi się, że to może być bardzo przydatne do testowania nagłówki odpowiedzi HTTP z selenem. Nie w 100% przypadków, może ... ale na pewno są. Jeśli sprawdzasz sekwencję stron, wydaje się, że warto przetestować niektóre nagłówki odpowiedzi w ramach tego testu (na myśl o typie zawartości i pragma).

0

Cóż, miałem nadzieję dowiedzieć się, czy właściwość Accept-Encoding z nagłówka HTTP zawiera "gzip", ponieważ w naszej firmie kompresujemy pliki CSS i JS w naszej aplikacji internetowej przez gzip i chcemy przetestować je przez Selenim po każdym zatwierdzeniu.

0

odczytać pliki cookie sesji z Selen i następnie wykorzystać prawdziwy Biblioteka HTTP poza Selenem, aby zażądać określonej strony.

Oto kod Python:

# get session cookies from Selenium 
cookies = {} 
for s_cookie in self.selenium.get_cookies(): 
    cookies[s_cookie["name"]]=s_cookie["value"] 

# request the pdf using the cookies: 
response = requests.get(self.full_url('/vms/business_unit/2002/operational_unit/200202/guest/40/bill/pdf/'), cookies = cookies) 
self.assertEqual(response.headers["content-type"], "application/pdf")