Aby zrozumieć rozszerzenia, przyjrzyjmy się najpierw trzem filarom selenu IDE
- Akcja: jaką operację wykonujesz na ekranie interfejsu użytkownika
- Asesorzy / Asercja: Jak weryfikujesz dane, które otrzymujesz z interfejsu użytkownika
- Strategia lokalizatora: Jak możemy znaleźć element w interfejsie użytkownika.
Teraz Selenium IDE ma bardzo dojrzałą bibliotekę z dużą ilością akcji, asercji / oceniających i strategii lokalizacyjnych.
Ale czasami musimy dodać do niego więcej funkcji, aby spełnić wymagania naszego projektu. W takiej sytuacji możemy rozszerzyć tę bibliotekę, dodając nasze niestandardowe rozszerzenia. Te niestandardowe rozszerzenia nazywane są „rozszerzeniami użytkownika”.
Na przykład potrzebujemy akcji, która może przekonwertować tekst na wielkie litery przed wypełnieniem go elementem sieciowym. Nie można znaleźć tej akcji w domyślnej bibliotece akcji. W takim przypadku możesz stworzyć własne „rozszerzenie użytkownika”. W tym samouczku nauczymy się, jak utworzyć rozszerzenie użytkownika, aby przekonwertować tekst na wielkie litery
Wymóg utworzenia rozszerzenia użytkownika Selenium:
Aby stworzyć rozszerzenie użytkownika dla Selenium IDE, musimy znać podstawową koncepcję koncepcji obiektu prototypowego JavaScript i Java Script.
Aby utworzyć rozszerzenie użytkownika, musisz utworzyć metody skryptów Java i dodać je do prototypu obiektu selenium i prototypu obiektu PageBot.
Jak Selenium IDE rozpoznaje rozszerzenie użytkownika?
Po dodaniu rozszerzenia użytkownika do Selenium IDE, gdy uruchamiamy Selenium IDE, wszystkie te rozszerzenia w prototypie javascript są ładowane, a Selenium IDE rozpoznaje je po ich nazwie.
Jak utworzyć rozszerzenie użytkownika
Krok 1) Akcja - wszystkie akcje są uruchamiane przez „do”, tzn. Jeśli akcja dotyczy tekstu pisanego dużymi literami, jej nazwa będzie doTextUpperCase. Kiedy dodamy tę metodę akcji w Selenium IDE, Selenium IDE sam utworzy metodę oczekiwania dla tej akcji. Więc w tym przypadku, kiedy tworzymy akcję doTextUpperCase , Selenium IDE utworzy odpowiednią funkcję wait jako TextUpperCaseAndWait . Może przyjąć dwa parametry
Przykład: czynność związana z tekstem wielkimi literami
Selenium.prototype.doTextUpperCase = function (lokalizator, tekst) {// Tutaj findElement jest w stanie obsłużyć wszystkie typy lokalizatorów (xpath, css, name, id, className), musimy tylko przekazać tekst lokalizatoraelement var = this.page (). findElement (lokalizator);// Utwórz tekst do wpisaniatext = text.toUpperCase ();// Zastąp tekst elementu nowym tekstemthis.page (). replaceText (element, tekst);};
Krok 2) Oceniający / Asercja - Wszyscy oceniający zarejestrowani w prototypie obiektu selenowego będą poprzedzeni prefiksem
przez „get” lub „is” Ex. getValueFromCompoundTable, isValueFromCompoundTable. Może akceptować dwa parametry, jeden dla celu, a drugi dla pola wartości w przypadku testowym.
Dla każdego asesora będą odpowiadały funkcje weryfikacyjne poprzedzone przedrostkiem „weryfikuj”, „potwierdzaj” i przedrostkiem funkcji oczekiwania znakiem „waitFor”
Przykład: dla oceniających z dużymi literami
Selenium.prototype.assertTextUpperCase = function (lokalizator, tekst) {// Wszystkie strategie lokalizacyjne są automatycznie obsługiwane przez „findElement”element var = this.page (). findElement (lokalizator);// Utwórz tekst do weryfikacjitext = text.toUpperCase ();// Pobierz rzeczywistą wartość elementuvar currentValue = element.value;// Upewnij się, że rzeczywista wartość jest zgodna z oczekiwanąAssert.matches (spodziewana wartość, rzeczywista wartość);};Selenium.prototype.isTextEqual = function (lokalizator, tekst) {return this.getText (lokalizator) .value === tekst;};Selenium.prototype.getTextValue = function (lokalizator, tekst) {return this.getText (lokalizator) .value;};
Krok 3) Strategia lokalizatora - Jeśli chcemy stworzyć własną funkcję do lokalizacji elementu, to wtedy
musimy rozszerzyć prototyp PageBota o funkcję z przedrostkiem „locateElementBy”.
Będzie to wymagało dwóch parametrów, pierwszy będzie ciągiem lokalizatora, a drugi dokumentem
gdzie należy go przeszukać.
Przykład: dla lokalizatora tekstu wielkimi literami
// „inDocument” to dokument, którego szukasz.PageBot.prototype.locateElementByUpperCase = function (tekst, inDocument) {// Utwórz tekst do wyszukaniavar spodziewanaValue = text.toUpperCase ();// Zapętlaj przez wszystkie elementy, szukając tych, które mają// wartość === nasza oczekiwana wartośćvar allElements = inDocument.getElementsByTagName ("*");// Ta gwiazdka '*' jest rodzajem wyrażenia regularnego, które przejdzie przez każdy element (w HTML DOM każdy element z pewnością ma nazwę tagu, taką jak , ,,