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.