Selen - Siatka

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.