Wykonywanie równoległe w Selenium: obsługa sesji & Zależność TestNG

Spisie treści:

Anonim

Aby zrozumieć, jak równolegle uruchamiać skrypty, najpierw zrozummy

Dlaczego potrzebujemy obsługi sesji?

Podczas wykonywania testu Selenium WebDriver musi przez cały czas współdziałać z przeglądarką, aby wykonać podane polecenia. W czasie wykonywania możliwe jest również, że przed zakończeniem bieżącego wykonywania ktoś inny rozpocznie wykonywanie innego skryptu, na tej samej maszynie iw tej samej przeglądarce.

W takiej sytuacji potrzebujemy mechanizmu, dzięki któremu nasze dwie różne egzekucje nie powinny się na siebie nakładać. Można to osiągnąć za pomocą obsługi sesji w Selenium.

Jak osiągnąć obsługę sesji w Selenium WebDriver?

Jeśli sprawdzisz kod źródłowy Selenium WebDriver, znajdziesz zmienną o nazwie „sessionId”. Za każdym razem, gdy tworzymy nową instancję obiektu WebDriver, nowy „sessionId” zostanie wygenerowany i dołączony do tego konkretnego sterownika Firefox / Chrome / IE ().

Więc wszystko, co zrobimy później, zostanie wykonane tylko w tej konkretnej sesji przeglądarki Firefox.

Ponieważ jest to funkcja wbudowana, nie ma wyraźnej potrzeby przypisywania identyfikatora sesji

Przykład kodu: Tutaj zostaną wygenerowane dwie różne sesje dla dwóch różnych WebDriver.

import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;public class SessionHandling {public static void main (String… strings) {// Pierwsza sesja WebDriverSterownik WebDriver = nowy FirefoxDriver ();// Przejdź do witryny guru99driver.get („http://demo.guru99.com/V4/”);// Druga sesja WebDriverWebDriver driver2 = nowy FirefoxDriver ();// Przejdź do witryny guru99driver2.get („http://demo.guru99.com/V4/”);}}

Jak przeprowadzić testy równoległe z Selenium

Są sytuacje, w których chcesz uruchomić wiele testów w tym samym czasie.

W takich przypadkach można użyć atrybutu „równoległość”

Atrybut równoległy znacznika pakietu może przyjmować cztery wartości:

testy Wszystkie przypadki testowe w tagu pliku Testing xml będą działać równolegle.
zajęcia Wszystkie przypadki testowe w klasie Java będą działać równolegle
metody Wszystkie metody z adnotacją @Test będą wykonywane równolegle.
instancje Przypadki testowe w tej samej instancji będą wykonywane równolegle, ale dwie metody dwóch różnych instancji będą działać w innym wątku.

Atrybut liczba wątków pozwala określić, ile wątków ma być przydzielonych do tego wykonania.

Pełny przykład: W tym przykładzie trzy przypadki testowe będą działać równolegle i wypełniać dane logowania na stronie http://demo.guru99.com

Kompletny projekt będzie wyglądał następująco:

TestGuru99MultipleSession.java

import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.Test;public class TestGuru99MultipleSession {@Testpublic void executSessionOne () {// Pierwsza sesja WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Sterownik WebDriver = nowy ChromeDriver ();// Przejdź do witryny guru99driver.get („http://demo.guru99.com/V4/”);// znajdź pole tekstowe nazwy użytkownika i wypełnij jedriver.findElement (By.name ("uid")). sendKeys ("Driver 1");}@Testpublic void executeSessionTwo () {// Druga sesja WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Sterownik WebDriver = nowy ChromeDriver ();// Przejdź do witryny guru99driver.get („http://demo.guru99.com/V4/”);// znajdź pole tekstowe nazwy użytkownika i wypełnij jedriver.findElement (By.name ("uid")). sendKeys ("Driver 2");}@Testpublic void executSessionThree () {// Trzecia sesja WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Sterownik WebDriver = nowy ChromeDriver ();// Przejdź do witryny guru99driver.get („http://demo.guru99.com/V4/”);// znajdź pole tekstowe nazwy użytkownika i wypełnij jedriver.findElement (By.name ("uid")). sendKeys ("Driver 3");}}

TestNG.XML

Kolejność i zależność przypadków testowych

Możesz ustawić kolejność i zależność wykonywania Przypadku Testowego.

Załóżmy, że masz dwa przypadki testowe, „testGuru99TC1” i „testGuru99TC2”, i chcesz wykonać przypadek testowy „testGuru99TC2” przed „testGuru99TC1”. W takim przypadku użyjemy atrybutu „dependsOnMethods”, aby określić zależność i kolejność wykonywania.

Podsumowanie

  • Nowy identyfikator sesji jest tworzony dla nowej instancji WebDriver.
  • Jedna sesja zostanie powiązana z jedną konkretną przeglądarką.
  • Używając wątku atrybutów i równoległego, uruchamiasz skrypty równolegle.
  • Możesz użyć zależności atrybutów, aby ustawić kolejność wykonywania testów