2009-10-01 10 views
5

Mamy projekt interfejsu użytkownika w MVC i do testowania automatycznego, używamy Selenium, to genialne narzędzie. Ale mam problem z podniesieniem poziomu wydarzeń w Selenium.Selenium RC i zdarzenia sterowania wejściami

Scenariusz: Scenariusz: Mam pole tekstowe, które oczekuje wartości + ve i powoduje pojawienie się błędu (javascript) po wprowadzeniu dowolnej wartości -ve, a my kliknęliśmy kartę z tego pola tekstowego lub kliknęliśmy na zewnątrz w dowolnym miejscu na stronie.

Działa dobrze przy normalnej interakcji użytkownika ze stroną internetową, ale podczas korzystania z selenu nie mogę tego osiągnąć. Umieszczam tekst w Selenium.Type ("elementId", - ve value), zdarzenie nie zostaje uruchomione, a błąd się nie rozpala.

Próbowałem używać FireEvent ("textboxId", "blur"), ale nie działa. Jedynym obejściem jest Focus w polu tekstowym, dodaj wartość, użyj FireEvent ("textbox", "blur"), a następnie Focus na innym polu tekstowym.

Czy ktoś ma jakiś pomysł, aby rozwiązać ten problem?

Odpowiedz

1

Twoje obejście nie wygląda na złą opcję. Kiedy koncentrujesz pole, a następnie zmieniasz zawartość, a następnie rozmywasz (koncentrując się na innym polu), to dokładnie taka sama interakcja, z jaką korzysta użytkownik.

Inną alternatywą (nadal wolę tę, która koncentruje się na innym polu) jest użycie funkcji getEval w celu uruchomienia funkcji javascript, która sprawdza poprawność pola. Można to sprawdzić tutorial jak to zrobić: http://www.theautomatedtester.co.uk/seleniumtraining/Selenium_JavaScript.htm

4

udało mi się dostać tę pracę z klientem Javy w selen RC wywołując

  • typu („id = textboxid”, „newValue”);

i

  • fireEvent ("id = textboxid", "rozmycia");

Czy otrzymałeś informację, czy wydarzenie "rozmycie" zostało w ogóle wyrzucone? Zastanawiam się, czy być może lokalizator nie działał prawidłowo, żeby wystrzelić to wydarzenie.

Bez względu na małe sztuczki, które musisz pociągnąć, aby to działało, aby uniknąć robienia tego dla każdego pola, powinieneś zawijać swoje 2-3 połączenia w funkcję, jeśli używasz klienta RC, lub register some user extensions, aby zrobić to w jednym kroku jeśli używasz Selenum IDE.

0

"Rozmycie" to świetne znalezisko! Dziękuję Ci.

Mój problem był trochę inny. Oto jak użyłem "rozmycia" dla listy rozwijanej (rodzica), która nie była wysyłana z powrotem, aby zapełnić drugą (potomną) listę rozwijaną (np. Stan i województwo).

  1. Selenium.Focus ("id = drpdwnState");
  2. Selenium.Select ("id = drpdwnState", "label = Michigan");
  3. Selenium.FireEvent ("id = drpdwnState", "blur");
  4. Selenium.Focus ("id = drpdwnCounty");
  5. Selen.Wybierz ("id = drpdwnCounty", "label = Grand Traverse");

Mam nadzieję, że to komuś pomaga. Pozdrawiam!