Selen - szybki przewodnik

Wprowadzenie

Selenium to otwarte i przenośne zautomatyzowane narzędzie do testowania oprogramowania do testowania aplikacji internetowych. Ma możliwości działania w różnych przeglądarkach i systemach operacyjnych. Selenium to nie tylko pojedyncze narzędzie, ale zestaw narzędzi, które pomagają testerom efektywniej automatyzować aplikacje internetowe.

Przyjrzyjmy się teraz każdemu z narzędzi dostępnych w pakiecie Selenium i ich zastosowaniu.

Sr.No. Narzędzie i opis
1

Selenium IDE

Selen Izintegrowane Dewolucja Environment (IDE) to wtyczka do przeglądarki Firefox, która umożliwia testerom rejestrowanie ich działań w trakcie wykonywania przepływu pracy, który muszą przetestować.

2

Selenium RC

Selen Remotikon Control (RC) był sztandarowym środowiskiem testowym, które pozwalało na coś więcej niż tylko proste działania przeglądarki i liniowe wykonywanie. Wykorzystuje pełną moc języków programowania, takich jak Java, C #, PHP, Python, Ruby i PERL do tworzenia bardziej złożonych testów.

3

Selenium WebDriver

Selenium WebDriver jest następcą Selenium RC, który wysyła polecenia bezpośrednio do przeglądarki i pobiera wyniki.

4

Selenium Grid

Selenium Grid to narzędzie służące do przeprowadzania równoległych testów na różnych maszynach i różnych przeglądarkach jednocześnie, co skutkuje zminimalizowanym czasem wykonania.

Zalety selenu

QTP i Selenium to najczęściej używane narzędzia na rynku do testowania automatyzacji oprogramowania. Dlatego warto porównać zalety Selenium z QTP.

Selen QTP
Selenium to narzędzie typu open source. QTP jest narzędziem komercyjnym i każda licencja wiąże się z pewnym kosztem.
Można rozszerzyć o różne technologie, które ujawniają DOM. Ograniczone dodatki i potrzeby dodatków dla każdej z technologii.
Posiada możliwości wykonywania skryptów w różnych przeglądarkach. Może uruchamiać testy w określonych wersjach przeglądarek Firefox, IE i Chrome.
Potrafi wykonywać skrypty w różnych systemach operacyjnych. Działa tylko z systemem Windows.
Obsługuje urządzenia mobilne. Obsługuje urządzenia mobilne za pomocą narzędzi innych firm.
Wykonuje testy w przeglądarce, więc NIE jest wymagane skupienie się na wykonywaniu skryptu. Wymaga skupienia się podczas wykonywania skryptu, ponieważ narzędzie działa w przeglądarce (naśladuje działania użytkownika).
Potrafi wykonywać testy równolegle z wykorzystaniem siatek selenowych. QTP nie może wykonywać testów równolegle, jednak integracja QTP z QC umożliwia testerom wykonywanie testów równolegle. QC to także narzędzie komercyjne.

Wady selenu

Omówmy teraz pułapki Selenium nad QTP.

Selen QTP
Obsługuje tylko aplikacje internetowe. Potrafi testować aplikacje internetowe i komputerowe.
Brak funkcji, takich jak repozytorium obiektów / scenariusz odzyskiwania QTP ma wbudowane repozytoria obiektów i scenariusze odzyskiwania.
Brak IDE, więc tworzenie skryptu nie będzie tak szybkie jak QTP. Bardziej intuicyjne IDE; automatyzację można osiągnąć szybciej.
Brak dostępu do elementów sterujących w przeglądarce. Może uzyskiwać dostęp do elementów sterujących w przeglądarce, takich jak pasek ulubionych, przyciski Wstecz i Dalej.
Brak domyślnego generowania raportów testowych. Domyślne generowanie wyników testu w narzędziu.
Podczas parametryzacji użytkownicy muszą polegać na języku programowania. Parametryzacja jest wbudowana i łatwa do wdrożenia.

Selenium-IDE (Integrated Development Environment) to łatwa w użyciu wtyczka Firefox do tworzenia przypadków testowych Selenium. Zapewnia graficzny interfejs użytkownika do rejestrowania działań użytkownika za pomocą przeglądarki Firefox, który jest używany do uczenia się i używania Selenium, ale może być używany tylko z przeglądarką Firefox, ponieważ inne przeglądarki nie są obsługiwane.

Jednak nagrane skrypty można konwertować na różne języki programowania obsługiwane przez Selenium, a skrypty można uruchamiać również w innych przeglądarkach.

W poniższej tabeli wymieniono sekcje, które omówimy w tym rozdziale.

Sr.No. Opis tytułu
1 Pobierz Selenium IDE

Ta sekcja dotyczy pobierania i konfiguracji Selenium IDE.

2 Funkcje Selenium IDE

Ta sekcja dotyczy funkcji dostępnych w Selenium IDE.

3 Tworzenie testów Selenium IDE

W tej sekcji opisano, jak tworzyć testy IDE przy użyciu funkcji nagrywania.

4 Debugowanie skryptów Selenium IDE

Ta sekcja dotyczy debugowania skryptu Selenium IDE.

5 Wstawianie punktów weryfikacyjnych

W tej sekcji opisano, jak wstawiać punkty weryfikacji w Selenium IDE.

6 Dopasowywanie wzorców selenu

W tej sekcji opisano, jak pracować z wyrażeniami regularnymi przy użyciu środowiska IDE.

7 Rozszerzenia użytkownika Selenium

Skrypt Java, który umożliwia użytkownikom dostosowywanie lub dodawanie nowych funkcji.

8 Wykonywanie różnych przeglądarek

Ta sekcja dotyczy wykonywania skryptów Selenium IDE w różnych przeglądarkach.

Aby opracować skrypty Selenium RC lub WebDriver, użytkownicy muszą upewnić się, że wykonali wstępną konfigurację. Konfiguracja środowiska obejmuje następujące kroki.

  • Pobierz i zainstaluj Javę
  • Pobierz i skonfiguruj Eclipse
  • Skonfiguruj FireBug i FirePath
  • Skonfiguruj Selenium RC
  • Skonfiguruj Selenium WebDriver

Pobierz i zainstaluj Javę

Musimy mieć zainstalowany JDK (Java Development Kit), aby współpracować z Selenium WebDriver / Selenium. Zobaczmy, jak pobrać i zainstalować Javę.

Step 1 - Przejdź do UR.

https://www.oracle.com/technetwork/java/javase/downloads/index.html

Step 2 - Przejdź do sekcji „Pobieranie” i wybierz „Pobieranie JDK”.

Step 3 - Wybierz opcję „Akceptuj umowę licencyjną”.

Step 4- Wybierz odpowiednią instalację. W tym przypadku jest to bit „Windows 7-64”. Kliknij odpowiednie łącze i zapisz plik .exe na dysku.

Step 5- Uruchom pobrany plik exe, aby uruchomić kreatora instalacji. Naciśnij dalej by kontynuować.

Step 6 - Wybierz funkcje i kliknij „Dalej”.

Step 7 - Instalator jest rozpakowany, a jego postęp jest wyświetlany w kreatorze.

Step 8 - Użytkownik może wybrać lokalizację instalacji i kliknąć „Dalej”.

Step 9 - Instalator instaluje pakiet JDK i nowe pliki są kopiowane.

Step 10 - Instalator instaluje się pomyślnie i wyświetla to samo użytkownikowi.

Step 11- Aby sprawdzić, czy instalacja się powiodła, przejdź do wiersza poleceń i po prostu wpisz „java” jako polecenie. Dane wyjściowe polecenia pokazano poniżej. Jeśli instalacja oprogramowania Java zakończy się niepowodzeniem lub jeśli NIE została zainstalowana, wygeneruje błąd „nieznane polecenie”.

Pobierz i skonfiguruj Eclipse

Step 1 - Przejdź do adresu URL: https://www.eclipse.org/downloads/ i pobierz odpowiedni plik oparty na architekturze systemu operacyjnego.

Step 2 - Kliknij przycisk „Pobierz”.

Step 3- Pobieranie będzie w formacie spakowanym. Rozpakuj zawartość.

Step 4 - Zlokalizuj Eclipse.exe i kliknij dwukrotnie plik.

Step 5 - Aby skonfigurować obszar roboczy, wybierz lokalizację, w której ma nastąpić rozwój.

Step 6 - Otworzy się okno Eclipse, jak pokazano poniżej.

Skonfiguruj FireBug i FirePath

Aby pracować z Selenium RC lub WebDriver, musimy zlokalizować elementy na podstawie ich XPath lub ID lub nazwy itp. Aby zlokalizować element, potrzebujemy narzędzi / wtyczek.

Step 1 - Przejdź do adresu URL: https://addons.mozilla.org/en-US/firefox/addon/firebug/ i pobierz wtyczkę.

Step 2 - Instalator dodatku jest wyświetlany użytkownikowi i jest instalowany po kliknięciu przycisku „Instaluj”.

Step 3 - Po zainstalowaniu możemy uruchomić wtyczkę, przechodząc do „Web Developer” >> „Firebug”.

Step 4- FirePath, wtyczka działająca w Firebug, pomaga użytkownikom pobrać „XPath” elementu. Zainstaluj FirePath, przechodząc do „https://addons.mozilla.org/en-US/firefox/addon/firepath/"

Step 5 - Instalator dodatku jest wyświetlany użytkownikowi i jest instalowany po kliknięciu przycisku „Instaluj”.

Step 6 - Teraz uruchom „Firebug”, przechodząc do „Narzędzia” >> „Webdeveloper” >> „Firebug”.

Przykład

Teraz zrozummy, jak używać FireBug i FirePath na przykładzie. Do celów demonstracyjnych użyjemy www.google.com i przechwycimy właściwości pola tekstowego „google.com”.

Step 1- Najpierw kliknij ikonę strzałki, jak zaznaczono na poniższym zrzucie ekranu i przeciągnij ją do obiektu, dla którego chcielibyśmy przechwycić właściwości. HTML / DOM obiektu zostanie wyświetlony, jak pokazano poniżej. Jesteśmy w stanie uchwycić „ID” pola tekstowego, z którym możemy wchodzić w interakcje.

Step 2 - Aby pobrać XPath obiektu, przejdź do zakładki „firepath” i wykonaj następujące czynności.

  • Kliknij ikonę Szpieg.
  • Wybierz formant, dla którego chcielibyśmy przechwycić XPath.
  • Zostanie wygenerowana ścieżka XPath wybranej kontrolki.

Skonfiguruj Selenium RC

Przyjrzyjmy się teraz, jak skonfigurować pilot Selenium. Zrozumiemy, jak tworzyć skrypty z Selenium RC w dalszych rozdziałach, jednak na razie zrozumiemy tylko część konfiguracyjną.

Step 1 - Przejdź do sekcji pobierania Selenium http://www.seleniumhq.org/download/ i pobierz Selenium Server, klikając jego numer wersji, jak pokazano poniżej.

Step 2- Po pobraniu musimy uruchomić Selenium Server. Aby to zrobić, otwórz wiersz polecenia i przejdź do folderu, w którym przechowywany jest pobrany plik JAR, jak pokazano poniżej.

Step 3- Aby uruchomić serwer, użyj polecenia 'java -jar << nazwa pobranego jar >> i jeśli java JDK jest poprawnie zainstalowany, otrzymasz komunikat o powodzeniu, jak pokazano poniżej. Teraz możemy zacząć pisać skrypty Selenium RC.

Skonfiguruj Selenium WebDriver

Przyjrzyjmy się teraz, jak skonfigurować Selenium WebDriver. Zrozumiemy, jak tworzyć skrypty z Selenium WebDriver w dalszych rozdziałach, jednak na razie zrozumiemy tylko część konfiguracyjną.

Step 1 - Przejdź do sekcji pobierania selenu http://www.seleniumhq.org/download/ i pobierz Selenium WebDriver, klikając jego numer wersji, jak pokazano poniżej.

Step 2 - Pobrany plik jest w formacie spakowanym i należy rozpakować zawartość, aby zmapować go do folderu projektu.

Step 3- Rozpakowana zawartość zostanie wyświetlona, ​​jak pokazano poniżej. Jak zmapować go do folderu projektu i jak rozpocząć pisanie skryptów, zostanie omówione w rozdziale webDriver.

Co to jest Selenium RC?

Selenium Remote Control (RC) był głównym projektem Selenium, który trwał długo przed powstaniem Selenium WebDriver (Selenium 2.0). Teraz Selenium RC jest prawie nieużywany, ponieważ WebDriver oferuje bardziej zaawansowane funkcje, jednak użytkownicy mogą nadal tworzyć skrypty za pomocą RC.

Pozwala nam na pisanie zautomatyzowanych testów interfejsu użytkownika aplikacji internetowych przy pomocy pełnej mocy języków programowania, takich jak Java, C #, Perl, Python i PHP w celu tworzenia bardziej złożonych testów, takich jak czytanie i pisanie plików, przeszukiwanie bazy danych i wysyłanie wyników testów pocztą elektroniczną .

Architektura Selenium RC

Selenium RC działa w taki sposób, że biblioteki klienckie mogą komunikować się z Selenium RC Server przekazując do wykonania każdą komendę Selenium. Następnie serwer przekazuje polecenie Selenium do przeglądarki za pomocą poleceń JavaScript Selenium-Core.

Przeglądarka wykonuje polecenie Selenium za pomocą swojego interpretera JavaScript.

Selenium RC składa się z dwóch części.

  • Serwer Selenium uruchamia i zabija przeglądarki. Oprócz tego interpretuje i wykonuje polecenia seleńskie. Działa również jako serwer proxy HTTP, przechwytując i weryfikując komunikaty HTTP przekazywane między przeglądarką a testowaną aplikacją.

  • Biblioteki klienckie zapewniające interfejs między każdym z języków programowania (Java, C #, Perl, Python i PHP) a serwerem Selenium-RC.

Skrypty RC

Teraz napiszemy przykładowy skrypt za pomocą Selenium Remote Control. Użyjmyhttp://www.calculator.net/za zrozumienie Selenium RC. Obliczenia procentowe wykonamy za pomocą „Kalkulatora procentowego”, który znajduje się w module „Kalkulatory matematyczne”.

Step 1 - Uruchom Selenium Remote Control (za pomocą wiersza poleceń).

Step 2 - Po uruchomieniu Selenium RC otwórz Eclipse i utwórz „Nowy projekt”, jak pokazano poniżej.

Step 3 - Wpisz nazwę projektu i kliknij przycisk „Dalej”.

Step 4 - Sprawdź folder Source, Projects, Libraries i Output i kliknij „Finish”.

Step 5 - Kliknij prawym przyciskiem kontener „projekt” i wybierz „Konfiguruj ścieżkę budowania”.

Step 6- Otwiera się właściwości „selrcdemo”. Przejdź do zakładki „Biblioteki” i wybierz „Dodaj zewnętrzne pliki JAR”. Wybierz plik jar Selenium RC, który pobraliśmy, a wyglądałby tak, jak pokazano poniżej.

Step 7 - Biblioteki, do których istnieją odniesienia, są pokazane poniżej.

Step 8 - Utwórz nowy plik klasy, klikając prawym przyciskiem myszy folder „src” i wybierając „Nowy” >> „klasa”.

Step 9 - Wprowadź nazwę pliku klasy i włącz opcję „public static void main”, jak pokazano poniżej.

Step 10 - Utworzona klasa jest tworzona w strukturze folderów, jak pokazano poniżej.

Step 11- Teraz czas na kodowanie. Poniższy kod ma osadzone komentarze, aby czytelnicy zrozumieli, co zostało przedstawione.

package selrcdemo;

import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;

public class rcdemo {
   public static void main(String[] args) throws InterruptedException {

      // Instatiate the RC Server
      Selenium selenium = new DefaultSelenium("localhost", 4444 , "firefox", "http://www.calculator.net");
      selenium.start();   // Start
      selenium.open("/");  // Open the URL
      selenium.windowMaximize();

      // Click on Link Math Calculator
      selenium.click("xpath = .//*[@id = 'menu']/div[3]/a");
      Thread.sleep(2500); // Wait for page load

      // Click on Link Percent Calculator
      selenium.click("xpath = .//*[@id = 'menu']/div[4]/div[3]/a");
      Thread.sleep(4000); // Wait for page load

      // Focus on text Box
      selenium.focus("name = cpar1");
      
      // enter a value in Text box 1
      selenium.type("css=input[name = \"cpar1\"]", "10");
      
      // enter a value in Text box 2
      selenium.focus("name = cpar2");
      selenium.type("css = input[name = \"cpar2\"]", "50");

      // Click Calculate button
      selenium.click("xpath = .//*[@id = 'content']/table/tbody/tr/td[2]/input");

      // verify if the result is 5
      String result = selenium.getText(".//*[@id = 'content']/p[2]");

      if (result == "5") {
         System.out.println("Pass");
      } else {
         System.out.println("Fail");
      }
   }
}

Step 12 - Teraz uruchommy skrypt, klikając przycisk „Uruchom”.

Step 13 - Skrypt zacznie się wykonywać, a użytkownik będzie mógł zobaczyć historię poleceń w zakładce „Historia poleceń”.

Step 14- Ostateczny stan aplikacji przedstawiono poniżej. Procent jest obliczany i wyświetla wynik na ekranie, jak pokazano poniżej.

Step 15- Wynik testu jest drukowany na konsoli Eclipse, jak pokazano poniżej, ponieważ wydrukowaliśmy wynik na konsoli. W czasie rzeczywistym dane wyjściowe są zapisywane w pliku HTML lub w prostym pliku tekstowym.

Polecenie odnosi się do tego, co ma zrobić Selen, a polecenia w selenie są trzech typów. Kliknij każdy z nich, aby dowiedzieć się więcej o poleceniach.

  • Actions

  • Accessors

  • Assertions

Lokalizatory

Lokalizatory elementów pomagają Selenium zidentyfikować element HTML, do którego odwołuje się polecenie. Wszystkie te lokalizatory można zidentyfikować za pomocą wtyczki FirePath i FireBug do Mozilli. Aby uzyskać szczegółowe informacje, zapoznaj się z rozdziałem Konfiguracja środowiska.

  • identifier = id Wybierz element z określonym atrybutem „id”, a jeśli nie ma dopasowania, wybierz pierwszy element, którego atrybut @name to id.

  • id = id Wybierz element z określonym atrybutem „id”.

  • name = name Wybierz pierwszy element z określonym atrybutem „nazwa”

  • dom = javascriptExpressionSelenium znajduje element, oceniając określony ciąg, który pozwala nam przechodzić przez model obiektu dokumentu HTML przy użyciu JavaScript. Użytkownicy nie mogą zwracać wartości, ale mogą oceniać ją jako wyrażenie w bloku.

  • xpath = xpathExpression Zlokalizuj element przy użyciu wyrażenia XPath.

  • link = textPattern Wybierz element odsyłacza (w znacznikach kotwicy), który zawiera tekst pasujący do określonego wzorca.

  • css = cssSelectorSyntax Wybierz element za pomocą selektora css.

WebDriver to narzędzie do automatyzacji testowania aplikacji internetowych. Jest powszechnie znany jako Selenium 2.0. WebDriver używa innej podstawowej struktury, podczas gdy Selenium RC używa JavaScript Selenium-Core osadzonego w przeglądarce, który ma pewne ograniczenia. WebDriver współdziała bezpośrednio z przeglądarką bez żadnego pośrednika, w przeciwieństwie do Selenium RC, który jest zależny od serwera. Jest używany w następującym kontekście -

  • Testy w wielu przeglądarkach, w tym ulepszona funkcjonalność dla przeglądarek, która nie jest dobrze obsługiwana przez Selenium RC (Selenium 1.0).

  • Obsługa wielu ramek, wielu okien przeglądarki, wyskakujących okienek i alertów.

  • Złożona nawigacja po stronach.

  • Zaawansowana nawigacja użytkownika, taka jak przeciąganie i upuszczanie.

  • Elementy interfejsu użytkownika oparte na technologii AJAX.

Architektura

WebDriver najlepiej wyjaśnić za pomocą prostego diagramu architektury, jak pokazano poniżej.

Selenium RC Vs WebDriver

Selen RC Selenium WebDriver
Architektura Selenium RC jest skomplikowana, ponieważ serwer musi być uruchomiony przed rozpoczęciem testu. Architektura WebDriver jest prostsza niż Selenium RC, ponieważ steruje przeglądarką z poziomu systemu operacyjnego.
Serwer Selenium działa jako pośrednik między przeglądarką a poleceniami Selenese. WebDriver współdziała bezpośrednio z przeglądarką i używa jej silnika do sterowania nią.
Wykonywanie skryptu Selenium RC jest wolniejsze, ponieważ wykorzystuje JavaScript do interakcji z RC. WebDriver jest szybszy, ponieważ współdziała bezpośrednio z przeglądarką.
Selenium RC nie może obsługiwać bezgłowego wykonywania, ponieważ wymaga prawdziwej przeglądarki do pracy. WebDriver może obsługiwać bezgłowe wykonanie.
To prosty i mały interfejs API. Złożony i nieco duży interfejs API w porównaniu do RC.
Mniej obiektowy interfejs API. Czysto obiektowy interfejs API.
Nie można testować aplikacji mobilnych. Potrafi testować aplikacje na iPhone'a / Androida.

Skrypty przy użyciu WebDriver

Pozwól nam zrozumieć, jak pracować z WebDriver. Do demonstracji użylibyśmyhttps://www.calculator.net/. Wykonamy „Kalkulator procentowy”, który znajduje się pod „Kalkulatorem matematycznym”. Pobraliśmy już wymagane pliki JAR WebDriver. Szczegółowe informacje można znaleźć w rozdziale „Ustawienia środowiskowe”.

Step 1 - Uruchom „Eclipse” z wyodrębnionego folderu Eclipse.

Step 2 - Wybierz obszar roboczy, klikając przycisk „Przeglądaj”.

Step 3 - Teraz utwórz „Nowy projekt” z menu „Plik”.

Step 4 - Wprowadź nazwę projektu i kliknij „Dalej”.

Step 5- Przejdź do zakładki Biblioteki i wybierz wszystkie pliki JAR, które pobraliśmy. Dodaj odniesienie do wszystkich plików JAR w folderze Selenium WebDriver Library, a także selenium-java-2.42.2.jar i selenium-java-2.42.2-srcs.jar.

Step 6 - Pakiet jest tworzony, jak pokazano poniżej.

Step 7 - Teraz kliknij pakiet prawym przyciskiem myszy i wybierz „Nowy” >> „Klasa”, aby utworzyć „klasę”.

Step 8 - Teraz nazwij klasę i ustaw ją jako główną funkcję.

Step 9 - Zarys klasy pokazano poniżej.

Step 10- Teraz czas na kodowanie. Poniższy skrypt jest łatwiejszy do zrozumienia, ponieważ zawiera komentarze, które jasno wyjaśniają kroki. Zapoznaj się z rozdziałem „Lokalizatory”, aby dowiedzieć się, jak przechwytywać właściwości obiektów.

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;

public class webdriverdemo {
   public static void main(String[] args) {
   
      WebDriver driver = new FirefoxDriver();
      //Puts an Implicit wait, Will wait for 10 seconds before throwing exception
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      
      //Launch website
      driver.navigate().to("http://www.calculator.net/");
      
      //Maximize the browser
      driver.manage().window().maximize();
      
      // Click on Math Calculators
      driver.findElement(By.xpath(".//*[@id = 'menu']/div[3]/a")).click();
      
      // Click on Percent Calculators
      driver.findElement(By.xpath(".//*[@id = 'menu']/div[4]/div[3]/a")).click();
      
      // Enter value 10 in the first number of the percent Calculator
      driver.findElement(By.id("cpar1")).sendKeys("10");
      
      // Enter value 50 in the second number of the percent Calculator
      driver.findElement(By.id("cpar2")).sendKeys("50");
      
      // Click Calculate Button
      driver.findElement(By.xpath(".//*[@id = 'content']/table/tbody/tr[2]/td/input[2]")).click();

      
      // Get the Result Text based on its xpath
      String result =
         driver.findElement(By.xpath(".//*[@id = 'content']/p[2]/font/b")).getText();

      
      // Print a Log In message to the screen
      System.out.println(" The Result is " + result);
      
      //Close the Browser.
      driver.close();
   }
}

Step 11 - Wynik powyższego skryptu zostanie wydrukowany w konsoli.

Najczęściej używane polecenia

W poniższej tabeli wymieniono niektóre z najczęściej używanych poleceń w programie WebDriver wraz z ich składnią.

Sr.No. Polecenie i opis
1

driver.get("URL")

Aby przejść do aplikacji.

2

element.sendKeys("inputtext")

Wprowadź tekst w polu wprowadzania.

3

element.clear()

Wyczyść zawartość z pola wprowadzania.

4

select.deselectAll()

Odznacz wszystkie OPCJE z pierwszego WYBORU na stronie.

5

select.selectByVisibleText("some text")

Wybierz OPCJĘ z danymi wejściowymi określonymi przez użytkownika.

6

driver.switchTo().window("windowName")

Przenieś fokus z jednego okna do drugiego.

7

driver.switchTo().frame("frameName")

Swing od ramki do ramki.

8

driver.switchTo().alert()

Pomaga w obsłudze alertów.

9

driver.navigate().to("URL")

Przejdź do adresu URL.

10

driver.navigate().forward()

Aby przejść dalej.

11

driver.navigate().back()

Nawigacja wstecz.

12

driver.close()

Zamyka bieżącą przeglądarkę skojarzoną ze sterownikiem.

13

driver.quit()

Zamyka sterownik i zamyka wszystkie skojarzone z nim okno tego sterownika.

14

driver.refresh()

Odświeża bieżącą stronę.

Lokalizowanie elementów w Selenium WebDriver odbywa się za pomocą metod findElement () i findElements () udostępnianych przez klasę WebDriver i WebElement.

  • findElement () zwraca obiekt WebElement na podstawie określonych kryteriów wyszukiwania lub kończy się wyrzuceniem wyjątku, jeśli nie znajdzie żadnego elementu pasującego do kryteriów wyszukiwania.

  • findElements () zwraca listę elementów WebElements pasujących do kryteriów wyszukiwania. Jeśli nie zostaną znalezione żadne elementy, zwraca pustą listę.

W poniższej tabeli wymieniono całą składnię języka Java służącą do lokalizowania elementów w Selenium WebDriver.

metoda Składnia Opis
Według ID driver.findElement (By.id (<identyfikator elementu>)) Lokalizuje element przy użyciu atrybutu ID
Wg nazwy driver.findElement (By.name (<nazwa elementu>)) Lokalizuje element przy użyciu atrybutu Name
Według nazwy klasy driver.findElement (By.className (<klasa elementu>)) Lokalizuje element przy użyciu atrybutu Class
Według nazwy znacznika driver.findElement (By.tagName (<htmltagname>)) Lokalizuje element za pomocą tagu HTML
Poprzez tekst linku driver.findElement (By.linkText (<linktext>)) Lokalizuje łącze za pomocą tekstu łącza
Według częściowego tekstu linku driver.findElement (By.partialLinkText (<linktext>)) Lokalizuje łącze, używając częściowego tekstu łącza
Według CSS driver.findElement (By.cssSelector (<selektor css>)) Lokalizuje element za pomocą selektora CSS
Przez XPath driver.findElement (By.xpath (<xpath>)) Lokalizuje element za pomocą zapytania XPath

Wykorzystanie lokalizatorów

Przyjrzyjmy się teraz praktycznemu zastosowaniu każdej z metod lokalizatora za pomocą https://www.calculator.net

Według ID

Tutaj dostęp do obiektu odbywa się za pomocą identyfikatorów. W tym przypadku jest to identyfikator pola tekstowego. Wartości wprowadza się do pola tekstowego metodą sendkeys przy pomocy ID (cdensity).

driver.findElement(By.id("cdensity")).sendKeys("10");

Wg nazwy

Tutaj uzyskuje się dostęp do obiektu za pomocą nazw. W tym przypadku jest to nazwa pola tekstowego. Wartości wprowadza się do pola tekstowego metodą sendkeys przy pomocy ID (cdensity).

driver.findElement(By.name("cdensity")).sendKeys("10");

Według nazwy klasy

Tutaj obiekt jest dostępny za pomocą nazw klas. W tym przypadku jest to nazwa klasy elementu WebElement. Dostęp do wartości można uzyskać za pomocą metody gettext.

List<WebElement> byclass = driver.findElements(By.className("smalltext smtb"));

Według nazwy znacznika

Nazwa tagu DOM elementu może być użyta do zlokalizowania tego konkretnego elementu w WebDriver. Przy pomocy tej metody bardzo łatwo jest obsługiwać tabele. Spójrz na poniższy kod.

WebElement table = driver.findElement(By.id("calctable"));
List<WebElement> row = table.findElements(By.tagName("tr"));
int rowcount = row.size();

Według tekstu linku

Ta metoda pomaga zlokalizować element łącza z pasującym widocznym tekstem.

driver.findElements(By.linkText("Volume")).click();

Według częściowego tekstu linku

Ta metoda pomaga zlokalizować element łącza z częściowym dopasowaniem widocznego tekstu.

driver.findElement(By.partialLinkText("Volume")).click();

Według CSS

CSS jest używany jako metoda identyfikacji obiektu internetowego, jednak NIE wszystkie przeglądarki obsługują identyfikację CSS.

WebElement loginButton = driver.findElement(By.cssSelector("input.login"));

Przez XPath

XPath oznacza język ścieżki XML. Jest to język zapytań służący do wybierania węzłów z dokumentu XML. XPath jest oparty na drzewiastej reprezentacji dokumentów XML i zapewnia możliwość poruszania się po drzewie poprzez wybieranie węzłów przy użyciu różnych kryteriów.

driver.findElement(By.xpath(".//*[@id = 'content']/table[1]/tbody/tr/td/table/tbody/tr[2]/td[1]/input")).sendkeys("100");

Selenium WebDriver jest najczęściej używanym narzędziem spośród wszystkich narzędzi dostępnych w zestawie narzędzi Selenium. Dlatego ważne jest, aby zrozumieć, jak używać Selenium do interakcji z aplikacjami internetowymi. W tym module wyjaśnijmy, jak współdziałać z obiektami GUI przy użyciu Selenium webDriver.

Musimy wchodzić w interakcję z aplikacją za pomocą podstawowych akcji lub nawet zaawansowanych działań użytkownika, tworząc funkcje zdefiniowane przez użytkownika, dla których nie ma predefiniowanych poleceń.

Poniżej wymienione są różne rodzaje działań przeciwko tym obiektom GUI -

  • Interakcja w polu tekstowym

  • Wybór przycisku radiowego

  • Zaznacz pole wyboru

  • Rozwijany wybór pozycji

  • Synchronization

  • Przeciągnij i upuść

  • Działania klawiatury

  • Akcje myszy

  • Wielokrotny wybór

  • Znajdź wszystkie linki

Projektowanie testów obejmuje różne elementy. Rozumiemy również niektóre z ważnych komponentów związanych z projektowaniem frameworka. W tym rozdziale poznamy następujące tematy -

  • Model obiektu strony

  • Parametryzacja za pomocą programu Excel

  • Log4j Logging

  • Obsługa wyjątków

  • Testowanie w wielu przeglądarkach

  • Zrzuty ekranu

  • Przechwytywanie wideo

TestNG to potężna platforma testowa, ulepszona wersja JUnit, która była używana przez długi czas, zanim powstał TestNG. NG oznacza „następną generację”.

Framework TestNG zapewnia następujące funkcje -

  • Adnotacje ułatwiają nam organizowanie testów.
  • Elastyczna konfiguracja testów.
  • Przypadki testowe można łatwiej grupować.
  • Zrównoleglenie testów można osiągnąć za pomocą TestNG.
  • Wsparcie dla testów opartych na danych.
  • Wbudowane raportowanie.

Instalowanie TestNG dla Eclipse

Step 1 - Uruchom Eclipse i wybierz „Zainstaluj nowe oprogramowanie”.

Step 2 - Wpisz adres URL jako „http://beust.com/eclipse” i kliknij „Dodaj”.

Step 3- Otworzy się okno dialogowe „Dodaj repozytorium”. Wpisz nazwę jako „TestNG” i kliknij „OK”

Step 4 - Kliknij „Zaznacz wszystko”, aby wybrać „TestNG”, jak pokazano na rysunku.

Step 5 - Kliknij „Dalej”, aby kontynuować.

Step 6 - Przejrzyj wybrane pozycje i kliknij „Dalej”.

Step 7 - „Zaakceptuj umowę licencyjną” i kliknij „Zakończ”.

Step 8 - TestNG rozpocznie instalację, a postęp będzie pokazany w następujący sposób.

Step 9- Pojawia się ostrzeżenie o zabezpieczeniach, ponieważ nie można ustalić ważności oprogramowania. Kliknij OK'.

Step 10- Instalator wyświetla monit o ponowne uruchomienie Eclipse, aby zmiany odniosły skutek. Kliknij „Tak”.

Adnotacje w TestNG

Adnotacje zostały formalnie dodane do języka Java w JDK 5 i TestNG zdecydował się użyć adnotacji do adnotacji klas testowych. Poniżej przedstawiono niektóre zalety korzystania z adnotacji. Więcej o TestNG można znaleźćhere

  • TestNG identyfikuje metody, którymi jest zainteresowany, wyszukując adnotacje. Dlatego nazwy metod nie są ograniczone do żadnego wzorca ani formatu.

  • Do adnotacji możemy przekazać dodatkowe parametry.

  • Adnotacje są silnie wpisane, więc kompilator od razu oznaczy wszelkie błędy.

  • Klasy testowe nie muszą już niczego rozszerzać (na przykład TestCase, dla JUnit 3).

Sr.No. Adnotacja i opis
1

@BeforeSuite

Metoda z adnotacjami zostanie uruchomiona tylko raz przed uruchomieniem wszystkich testów w tym pakiecie.

2

@AfterSuite

Metoda z adnotacjami zostanie uruchomiona tylko raz po wykonaniu wszystkich testów w tym pakiecie.

3

@BeforeClass

Metoda z adnotacjami zostanie uruchomiona tylko raz przed wywołaniem pierwszej metody testowej w bieżącej klasie.

4

@AfterClass

Metoda z adnotacjami zostanie uruchomiona tylko raz po uruchomieniu wszystkich metod testowych w bieżącej klasie.

5

@BeforeTest

Metoda z adnotacjami zostanie uruchomiona przed uruchomieniem jakiejkolwiek metody testowej należącej do klas wewnątrz tagu <test>.

6

@AfterTest

Metoda z adnotacjami zostanie uruchomiona po uruchomieniu wszystkich metod testowych należących do klas wewnątrz tagu <test>.

7

@BeforeGroups

Lista grup, dla których ta metoda konfiguracji będzie działać wcześniej. Ta metoda jest gwarantowana na krótko przed wywołaniem pierwszej metody testowej należącej do którejkolwiek z tych grup.

8

@AfterGroups

Lista grup, po których będzie działać ta metoda konfiguracji. Ta metoda zostanie uruchomiona wkrótce po wywołaniu ostatniej metody testowej należącej do którejkolwiek z tych grup.

9

@BeforeMethod

Opisana metoda zostanie uruchomiona przed każdą metodą testową.

10

@AfterMethod

Opisana metoda zostanie uruchomiona po każdej metodzie testowej.

11

@DataProvider

Oznacza metodę jako dostarczającą dane dla metody testowej. Metoda z adnotacjami musi zwracać Object [] [], w którym do każdego obiektu [] można przypisać listę parametrów metody testowej. Metoda @Test, która chce odbierać dane od tego dostawcy danych, musi używać nazwy dostawcy danych równej nazwie tej adnotacji.

12

@Factory

Oznacza metodę jako fabrykę, która zwraca obiekty, które będą używane przez TestNG jako klasy Test. Metoda musi zwracać Object [].

13

@Listeners

Definiuje słuchaczy w klasie testowej.

14

@Parameters

Opisuje sposób przekazywania parametrów do metody @Test.

15

@Test

Oznacza klasę lub metodę jako część testu.

Konfiguracja TestNG-Eclipse

Step 1 - Uruchom Eclipse i utwórz „Nowy projekt Java”, jak pokazano poniżej.

Step 2 - Wpisz nazwę projektu i kliknij „Dalej”.

Step 3 - Przejdź do zakładki „Biblioteki” i dodaj plik JAR serwera zdalnego sterowania Selenium, klikając „Dodaj zewnętrzne pliki JAR”, jak pokazano poniżej.

Step 4- Dodany plik JAR jest pokazany tutaj. Kliknij „Dodaj bibliotekę”.

Step 5- Otworzy się okno dialogowe „Dodaj bibliotekę”. Wybierz „TestNG” i kliknij „Dalej” w oknie dialogowym „Dodaj bibliotekę”.

Step 6 - Dodana biblioteka „TestNG” zostaje dodana i jest wyświetlana, jak pokazano poniżej.

Step 7 - Po utworzeniu projektu struktura projektu wyglądałaby tak, jak pokazano poniżej.

Step 8 - Kliknij prawym przyciskiem folder „src” i wybierz Nowy >> Inne.

Step 9 - Wybierz „TestNG” i kliknij „Dalej”.

Step 10 - Wybierz nazwę „folderu źródłowego” i kliknij „OK”.

Step 11 - Wybierz „Nazwę pakietu”, „nazwę klasy” i kliknij „Zakończ”.

Step 12 - Zostanie wyświetlony eksplorator pakietów i utworzona klasa.

Pierwszy test w TestNG

Teraz zacznijmy pisać skrypty za pomocą TestNG. Skorzystajmy z tego samego przykładu, którego użyliśmy do zrozumienia WebDriver. Skorzystamy z aplikacji demonstracyjnej www.calculator.net i wykonamy kalkulator procentowy.

W poniższym teście zauważysz, że NIE ma głównej metody, ponieważ testNG będzie sterować przepływem wykonywania programu. Po zainicjowaniu sterownika wykona metodę „@BeforeTest”, po której nastąpi „@Test”, a następnie „@AfterTest”. Należy pamiętać, że w klasie może istnieć dowolna liczba adnotacji „@Test”, ale „@BeforeTest” i „@AfterTest” mogą pojawić się tylko raz.

package TestNG;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;

import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class TestNGClass {
   WebDriver driver = new FirefoxDriver();
   
   @BeforeTest
   public void launchapp() {
      // Puts an Implicit wait, Will wait for 10 seconds before throwing exception
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      
      // Launch website
      driver.navigate().to("http://www.calculator.net");
      driver.manage().window().maximize();
   }
   
   @Test
   public void calculatepercent() {
      // Click on Math Calculators
      driver.findElement(By.xpath(".//*[@id='menu']/div[3]/a")).click();
      
      // Click on Percent Calculators
      driver.findElement(By.xpath(".//*[@id='menu']/div[4]/div[3]/a")).click();
      
      // Enter value 10 in the first number of the percent Calculator
      driver.findElement(By.id("cpar1")).sendKeys("10");
      
      // Enter value 50 in the second number of the percent Calculator
      driver.findElement(By.id("cpar2")).sendKeys("50");
      
      // Click Calculate Button
      driver.findElement(By.xpath(".//*[@id='content']/table/tbody/tr/td[2]/input")).click();
      
      // Get the Result Text based on its xpath
      String result =
         driver.findElement(By.xpath(".//*[@id='content']/p[2]/span/font/b")).getText();
      
      // Print a Log In message to the screen
      System.out.println(" The Result is " + result);
      
      if(result.equals("5")) {
         System.out.println(" The Result is Pass");
      } else {
         System.out.println(" The Result is Fail");
      }
   }
   
   @AfterTest
   public void terminatetest() {
      driver.close();
   }
}

Wykonanie

Aby wykonać, kliknij prawym przyciskiem myszy utworzony plik XML i wybierz „Uruchom jako” >> „TestNG Suite”

Analiza wyników

Dane wyjściowe są przesyłane do konsoli i wyglądają tak, jak pokazano poniżej. Dane wyjściowe konsoli zawierają również podsumowanie wykonania.

Wynik TestNG można również zobaczyć na innej karcie. Kliknij przycisk „Widok raportu HTML”, jak pokazano poniżej.

Wynik HTML zostanie wyświetlony, jak pokazano poniżej.

Selenium Grid to narzędzie, które dystrybuuje testy na wiele maszyn fizycznych lub wirtualnych, dzięki czemu możemy wykonywać skrypty równolegle (jednocześnie). Znacząco przyspiesza proces testowania w różnych przeglądarkach i na różnych platformach, dając nam szybkie i dokładne informacje zwrotne.

Selenium Grid pozwala nam równolegle wykonywać wiele instancji testów WebDriver lub Selenium Remote Control, które używają tej samej bazy kodu, stąd kod NIE musi być obecny w systemie, który wykonują. Samodzielny pakiet selenium-server zawiera Hub, WebDriver i Selenium RC do wykonywania skryptów w gridzie.

Siatka selenowa ma węzeł i węzeł.

  • Hub- Hub można również rozumieć jako serwer, który działa jako centralny punkt, w którym uruchamiane byłyby testy. Siatka selenowa ma tylko jeden koncentrator i jest uruchamiana na jednym komputerze raz.

  • Node- Węzły to instancje Selenium podłączone do koncentratora, które wykonują testy. W siatce może znajdować się jeden lub więcej węzłów, które mogą należeć do dowolnego systemu operacyjnego i mogą zawierać dowolną przeglądarkę obsługiwaną przez Selenium.

Architektura

Poniższy diagram przedstawia architekturę Selenium Grid.

Praca z Grid

Aby pracować z Grid, musimy przestrzegać określonych protokołów. Posłuchaj poniżej głównych etapów tego procesu -

  • Konfigurowanie koncentratora
  • Konfiguracja węzłów
  • Opracuj skrypt i przygotuj plik XML
  • Wykonanie testu
  • Analiza wyników

Omówmy szczegółowo każdy z tych kroków.

Konfigurowanie koncentratora

Step 1 - Pobierz najnowszy samodzielny plik JAR Selenium Server z http://docs.seleniumhq.org/download/. Pobierz go, klikając wersję, jak pokazano poniżej.

Step 2- Uruchom Hub, uruchamiając Selenium Server za pomocą następującego polecenia. Teraz użyjemy portu „4444” do uruchomienia koncentratora.

Note - Upewnij się, że na porcie nr 4444 nie działają żadne inne aplikacje.

java -jar selenium-server-standalone-2.25.0.jar -port 4444 -role hub -nodeTimeout 1000

Step 3 - Teraz otwórz przeglądarkę i przejdź do adresu URL http // localhost: 4444 z huba (system, w którym wykonałeś krok # 2).

Step 4- Teraz kliknij link „konsola”, a następnie „wyświetl konfigurację”. Konfiguracja koncentratora zostanie wyświetlona w następujący sposób. Na razie nie mamy żadnych węzłów, dlatego nie będziemy mogli zobaczyć szczegółów.

Konfiguracja węzłów

Step 1- Zaloguj się do węzła (w którym chcesz wykonywać skrypty) i umieść plik „selenium-server-standalone-2.42.2” w folderze. Podczas uruchamiania węzłów musimy wskazać samodzielny plik JAR serwera selenium.

Step 2 - Uruchom węzeł FireFox za pomocą poniższego polecenia.

java -jar D:\JAR\selenium-server-standalone-2.42.2.jar
   -role node -hub http://10.30.217.157:4444/grid/register
   -browser browserName = firefox -port 5555

Gdzie,

D: \ JAR \ selenium-server-standalone-2.42.2.jar = Lokalizacja samodzielnego pliku JAR serwera Selenium (na maszynie węzłowej)

http://10.30.217.157:4444 = Adres IP huba, a 4444 to port huba

browserName = firefox (parametr określający nazwę przeglądarki w węzłach)

5555 = Port, na którym miałby działać węzeł Firefox.

Step 3- Po wykonaniu polecenia wróć do Hub. Przejdź do adresu URL - http://10.30.217.157:4444, a centrum wyświetli teraz dołączony do niego węzeł.

Step 4- Teraz uruchommy węzeł Internet Explorer. Aby uruchomić węzeł IE, musimy pobrać sterownik Internet Explorer na komputer węzła.

Step 5 - Aby pobrać sterownik Internet Explorer, przejdź do http://docs.seleniumhq.org/download/i pobierz odpowiedni plik w oparciu o architekturę Twojego systemu operacyjnego. Po pobraniu rozpakuj plik exe i umieść w nim folder, do którego należy się odwołać podczas uruchamiania węzłów IE.

Step 6 - Uruchom IE za pomocą następującego polecenia.

C:\>java -Dwebdriver.ie.driver = D:\IEDriverServer.exe
   -jar D:\JAR\selenium-server-standalone-2.42.2.jar
   -role webdriver -hub http://10.30.217.157:4444/grid/register
   -browser browserName = ie,platform = WINDOWS -port 5558

Gdzie,

D: \ IEDriverServer.exe = Lokalizacja pobranego sterownika IE (na komputerze węzłowym)

D: \ JAR \ selenium-server-standalone-2.42.2.jar = Lokalizacja samodzielnego pliku JAR serwera Selenium (na maszynie węzłowej)

http://10.30.217.157:4444 = Adres IP huba, a 4444 to port huba

browserName = ie (parametr określający nazwę przeglądarki w węzłach)

5558 = Port, na którym powinien działać węzeł IE.

Step 7- Po wykonaniu polecenia wróć do Hub. Przejdź do adresu URL - http://10.30.217.157:4444, a centrum wyświetli teraz dołączony do niego węzeł IE.

Step 8- Uruchommy teraz Chrome Node. Aby uruchomić węzeł Chrome, musimy pobrać sterownik Chrome na komputer węzła.

Step 9 - Aby pobrać sterownik Chrome, przejdź do http://docs.seleniumhq.org/download/ a następnie przejdź do obszaru Sterowniki przeglądarek innych firm i kliknij numer wersji „2.10”, jak pokazano poniżej.

Step 10- Pobierz sterownik na podstawie typu systemu operacyjnego. Uruchomimy go w środowisku Windows, stąd pobierzemy sterownik Windows Chrome. Po pobraniu rozpakuj plik exe i umieść go w folderze, do którego należy się odwoływać podczas uruchamiania węzłów chrome.

Step 11 - Uruchom Chrome za pomocą następującego polecenia.

C:\>java -Dwebdriver.chrome.driver = D:\chromedriver.exe 
   -jar D:\JAR\selenium-server-standalone-2.42.2.jar 
   -role webdriver -hub  http://10.30.217.157:4444/grid/register 
   -browser browserName = chrome, platform = WINDOWS -port 5557

Gdzie,

D: \ chromedriver.exe = Lokalizacja pobranego sterownika chrome (na maszynie Node)

D: \ JAR \ selenium-server-standalone-2.42.2.jar = Lokalizacja samodzielnego pliku JAR serwera Selenium (na maszynie węzłowej)

http://10.30.217.157:4444 = Adres IP huba, a 4444 to port huba

browserName = chrome (parametr określający nazwę przeglądarki w węzłach)

5557 = Port, na którym węzeł chrome będzie działał.

Step 12- Po wykonaniu polecenia wróć do Hub. Przejdź do adresu URL - http://10.30.217.157:4444, a centrum wyświetli teraz dołączony do niego węzeł chrome.

Opracuj skrypt i przygotuj plik XML

Step 1- Opracujemy test przy użyciu TestNG. W poniższym przykładzie uruchomimy każdą z tych przeglądarek za pomocą zdalnego sterownika webDriver. Może przekazać swoje możliwości sterownikowi, tak aby miał on wszystkie informacje do wykonania na węzłach.

Parametr przeglądarki zostałby przekazany z pliku „XML”.

package TestNG;

import org.openqa.selenium.*;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;

import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

import java.net.URL;
import java.util.concurrent.TimeUnit;
import java.net.MalformedURLException;

public class TestNGClass {
   public WebDriver driver;
   public String URL, Node;
   protected ThreadLocal<RemoteWebDriver> threadDriver = null;
   
   @Parameters("browser")
   @BeforeTest
   public void launchapp(String browser) throws MalformedURLException {
      String URL = "http://www.calculator.net";
      
      if (browser.equalsIgnoreCase("firefox")) {
         System.out.println(" Executing on FireFox");
         String Node = "http://10.112.66.52:5555/wd/hub";
         DesiredCapabilities cap = DesiredCapabilities.firefox();
         cap.setBrowserName("firefox");
         
         driver = new RemoteWebDriver(new URL(Node), cap);
         // Puts an Implicit wait, Will wait for 10 seconds before throwing exception
         driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
         
         // Launch website
         driver.navigate().to(URL);
         driver.manage().window().maximize();
      } else if (browser.equalsIgnoreCase("chrome")) {
         System.out.println(" Executing on CHROME");
         DesiredCapabilities cap = DesiredCapabilities.chrome();
         cap.setBrowserName("chrome");
         String Node = "http://10.112.66.52:5557/wd/hub";
         driver = new RemoteWebDriver(new URL(Node), cap);
         driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
         
         // Launch website
         driver.navigate().to(URL);
         driver.manage().window().maximize();
      } else if (browser.equalsIgnoreCase("ie")) {
         System.out.println(" Executing on IE");
         DesiredCapabilities cap = DesiredCapabilities.chrome();
         cap.setBrowserName("ie");
         String Node = "http://10.112.66.52:5558/wd/hub";
         driver = new RemoteWebDriver(new URL(Node), cap);
         driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
         
         // Launch website
         driver.navigate().to(URL);
         driver.manage().window().maximize();
      } else {
         throw new IllegalArgumentException("The Browser Type is Undefined");
      }
   }
   
   @Test
   public void calculatepercent() {
      // Click on Math Calculators
      driver.findElement(By.xpath(".//*[@id = 'menu']/div[3]/a")).click();     	
      
      // Click on Percent Calculators
      driver.findElement(By.xpath(".//*[@id = 'menu']/div[4]/div[3]/a")).click();
      
      // Enter value 10 in the first number of the percent Calculator
      driver.findElement(By.id("cpar1")).sendKeys("10");
      
      // Enter value 50 in the second number of the percent Calculator
      driver.findElement(By.id("cpar2")).sendKeys("50");
      
      // Click Calculate Button
      // driver.findElement(By.xpath(".//*[@id = 'content']/table/tbody/tr/td[2]/input")).click();
      // Get the Result Text based on its xpath
      String result =
         driver.findElement(By.xpath(".//*[@id = 'content']/p[2]/span/font/b")).getText();
      
      // Print a Log In message to the screen
      System.out.println(" The Result is " + result);
      
      if(result.equals("5")) {
         System.out.println(" The Result is Pass");
      } else {
         System.out.println(" The Result is Fail");
      }
   }
   
   @AfterTest
   public void closeBrowser() {
      driver.quit();
   }
}

Step 2- Parametr przeglądarki zostanie przekazany za pomocą XML. Utwórz XML w folderze projektu.

Step 3 - Wybierz „Plik” z „Ogólne” i kliknij „Dalej”.

Step 4 - Wprowadź nazwę pliku i kliknij „Zakończ”.

Step 5 - TestNg.XML jest tworzony w folderze projektu, jak pokazano poniżej.

Step 6- Zawartość pliku XML pokazano poniżej. Tworzymy 3 testy i umieszczamy je w zestawie i wymieniamy parallel = "tests", aby wszystkie testy były wykonywane równolegle.

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name = "Suite" parallel = "tests">

   <test name = "FirefoxTest">
   <parameter name = "browser" value = "firefox" />
      <classes>
         <class name = "TestNG.TestNGClass" />
      </classes>
   </test>

   <test name = "ChromeTest">
   <parameter name = "browser" value = "chrome" />
      <classes>
         <class name = "TestNG.TestNGClass" />
      </classes>
   </test>

   <test name = "IETest">
   <parameter name = "browser" value = "ie" />
      <classes>
         <class name = "TestNG.TestNGClass" />
      </classes>
   </test>
   
</suite>

Wykonanie testu

Step 1- Wybierz utworzony XML; kliknij prawym przyciskiem myszy i wybierz „Uruchom jako” >> „TestNG Suite”.

Step 2- Teraz otwórz węzeł, w którym uruchomiliśmy wszystkie węzły przeglądarki. Zobaczysz wszystkie trzy przeglądarki uruchomione jednocześnie.

Analiza wyników

Step 1- Po zakończeniu egzekucji możemy przeanalizować wynik jak każde inne wykonanie. Podsumowanie wyników jest drukowane w konsoli, jak pokazano na poniższej migawce.

Step 2 - Przejdź do zakładki „Wyniki uruchomionego pakietu”, a TestNG wyświetli podsumowanie wyników, jak pokazano poniżej.

Step 3 - Po wygenerowaniu HTML będziemy mogli zobaczyć wyniki testu w formacie HTML.