Aby sme pochopili, ako paralelne spúšťať skripty, najskôr to pochopíme
Prečo potrebujeme spracovanie relácií?
Počas vykonávania testu musí Selenium WebDriver po celý čas interagovať s prehliadačom, aby vykonal dané príkazy. V čase vykonania je tiež možné, že predtým, ako sa dokončí súčasné spustenie, niekto iný začne vykonávať iný skript, na rovnakom počítači a v rovnakom type prehliadača.
V takejto situácii potrebujeme mechanizmus, pomocou ktorého by sa naše dve rôzne popravy nemali navzájom prekrývať. To sa dá dosiahnuť pomocou Session Handling in Selenium.
Ako dosiahnuť spracovanie relácie v selenovom webovom ovládači?
Ak skontrolujete zdrojový kód Selenium WebDriver, nájdete premennú s názvom „sessionId“. Kedykoľvek vytvoríme novú inštanciu objektu WebDriver, vygeneruje sa nový 'sessionId' a pripojí sa k danému konkrétnemu ovládaču Firefox / Chrome / IE ().
Čokoľvek, čo urobíme potom, sa vykoná iba v tejto konkrétnej relácii prehliadača Firefox.
Pretože sa jedná o zabudovanú funkciu, nie je potrebné explicitne priraďovať ID relácie
Príklad kódu: Tu sa vygenerujú dve rôzne relácie pre dva rôzne WebDriver.
import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;verejná trieda SessionHandling {public static void main (String ... strings) {// Prvá relácia WebDriveruOvládač WebDriver = nový FirefoxDriver ();// Prejdite na stránku guru99driver.get ("http://demo.guru99.com/V4/");// Druhá relácia WebDriveruOvládač WebDriver2 = nový FirefoxDriver ();// Prejdite na stránku guru99driver2.get ("http://demo.guru99.com/V4/");}}
Ako spustiť paralelné testy so selénom
Existujú situácie, kedy chcete vykonať viac testov súčasne.
V takýchto prípadoch možno použiť atribút „paralelný“
Atribút parallel tagu suite môže akceptovať štyri hodnoty:
testy | Všetky testovacie prípady vo vnútri značky |
triedy | Všetky testovacie prípady vo vnútri triedy Java budú bežať paralelne |
metódy | Všetky metódy s anotáciou @Test sa budú vykonávať paralelne. |
inštancie | Testovacie prípady v tej istej inštancii sa budú vykonávať paralelne, ale dve metódy dvoch rôznych inštancií budú bežať v inom vlákne. |
Atribút count-count vám umožňuje určiť, koľko vlákien by malo byť pridelených na toto vykonanie.
Kompletný príklad: V tomto príklade budú paralelne prebiehať tri testovacie prípady a vyplnia prihlasovacie údaje na stránke http://demo.guru99.com
Kompletný projekt bude vyzerať takto:
TestGuru99MultipleSession.java
import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.Test;verejná trieda TestGuru99MultipleSession {@Testpublic void executSessionOne () {// Prvá relácia WebDriveruSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Ovládač WebDriver = nový ChromeDriver ();// Prejdite na stránku guru99driver.get ("http://demo.guru99.com/V4/");// vyhľadať textové pole pre meno používateľa a vyplniť hodriver.findElement (By.name ("uid")). sendKeys ("Driver 1");}@Testpublic void executeSessionTwo () {// Druhá relácia WebDriveruSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Ovládač WebDriver = nový ChromeDriver ();// Prejdite na stránku guru99driver.get ("http://demo.guru99.com/V4/");// vyhľadať textové pole pre meno používateľa a vyplniť hodriver.findElement (By.name ("uid")). sendKeys ("Driver 2");}@Testpublic void executSessionThree () {// Tretie zasadnutie WebDriveruSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Ovládač WebDriver = nový ChromeDriver ();// Prejdite na stránku guru99driver.get ("http://demo.guru99.com/V4/");// vyhľadať textové pole pre meno používateľa a vyplniť hodriver.findElement (By.name ("uid")). sendKeys ("Driver 3");}}
TestNG.XML
xml version = "1.0" encoding = "UTF-8"?>
Poradie testovacích prípadov a závislosť
Môžete nastaviť poradie a závislosť vykonania Testovacieho prípadu.
Predpokladajme, že máte dva testovacie prípady „testGuru99TC1“ a „testGuru99TC2“ a chcete vykonať testovací prípad „testGuru99TC2“ pred „testGuru99TC1“. V takom prípade použijeme atribút 'dependsOnMethods' na vytvorenie závislosti a poradia vykonania.
xml version = "1.0" encoding = "UTF-8"?>
Zhrnutie
- Pre novú inštanciu WebDriver sa vytvorí nové ID relácie.
- Jedna relácia sa spojí s jedným konkrétnym prehliadačom.
- Pomocou atribútu vlákno a paralelne spúšťate svoje skripty paralelne.
- Môžete použiť závislosť atribútov na nastavenie poradia na testovanie vykonania