Paralleelne täitmine sisse Selenium
⚡ Nutikas kokkuvõte
Seansid, paralleelne käivitamine ja sõltuvus Selenium kombineeri iga WebDriveri eksemplari jaoks unikaalne seansi ID koos TestNG komplekti juhtelemendid, mis võimaldavad paljudel brauseriakendel korraga käivitada sõltumatuid või järjestatud skripte ja kiirendada regressioonitsüklit.

Skriptide paralleelse käitamise mõistmiseks peate kõigepealt teadma, kuidas Selenium isoleerib iga brauseri seansside kaupa.
Miks me vajame seansihaldust?
Testi teostamise ajal, Selenium WebDriver peab antud käskude täitmiseks igal sammul brauseriga suhtlema. Testi töötamise ajal võib teine kasutaja käivitada teise skripti samal masinal ja sama tüüpi brauseris.
Sellises olukorras vajame mehhanismi, et kaks teostust ei kattuks. Selenium lahendab selle seansihalduse kaudu.
Kuidas saavutada seansihaldus Selenium Veebidraiver?
Kui te kontrollite Selenium WebDriveri lähtekoodist leiate muutuja nimega sessionIdIga kord, kui loote uue WebDriveri eksemplari, luuakse värske sessionId genereeritakse ja sellega kinnitatakse Firefox, Chrome'i või IE draiver.
Iga järgnev käsk töötab ainult selle konkreetse brauseriseansi sees.
Kuna see on WebDriverisse sisse ehitatud, pole vaja sessionId käsitsi määrata.
Code Näide: Kahe WebDriveri eksemplari jaoks genereeritakse kaks erinevat seanssi.
import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class SessionHandling { public static void main(String... strings) { // First session of WebDriver WebDriver driver = new FirefoxDriver(); // Go to guru99 demo site driver.get("https://demo.guru99.com/V4/"); // Second session of WebDriver WebDriver driver2 = new FirefoxDriver(); // Go to guru99 demo site driver2.get("https://demo.guru99.com/V4/"); } }
Paralleeltestide käivitamine Selenium
On olukordi, kus on vaja korraga mitut testi teha, näiteks brauseriteülesed kontrollid või suured suitsuruumid.
Sellistel juhtudel parallel atribuut peal TestNG Suite'i silt teeb töö ära.
Komplektsildi paralleelne atribuut aktsepteerib nelja väärtust:
| Atribuudi väärtus | Tähendus |
|---|---|
| testid | KÕIK testjuhtumid sees silt testimine XML-failid töötavad paralleelselt. |
| klassid | Kõik testid a sees Java klass käib paralleelselt. |
| meetodid | Kõik @Test-iga annoteeritud meetodid käivitatakse paralleelselt. |
| juhtumid | Samas eksemplaris töötavad testid paralleelselt, samas kui kahe erineva eksemplari kaks meetodit töötavad erinevates lõimedes. |
. thread-count atribuut määrab, mitu lõime sellele teostusele eraldatakse. Paarige see atribuudiga TestNG raamistik ja paigaldama TestNG in Eclipse enne käivitamist. Ühest masinast suurema ulatuse korral suunake sama komplekt läbi Selenium Võrgustik 4 hajutatud paralleelse täitmise jaoks.
Täielik näide: kolm testi käivitatakse paralleelselt ja täidavad sisselogimisandmed https://demo.guru99.com/.
Täielik projekt näeb välja selline:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.Test; public class TestGuru99MultipleSession { @Test public void executeSessionOne() { // First session of WebDriver System.setProperty("webdriver.chrome.driver", "chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("https://demo.guru99.com/V4/"); // Find the user name text box and fill it driver.findElement(By.name("uid")).sendKeys("Driver 1"); } @Test public void executeSessionTwo() { // Second session of WebDriver System.setProperty("webdriver.chrome.driver", "chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("https://demo.guru99.com/V4/"); driver.findElement(By.name("uid")).sendKeys("Driver 2"); } @Test public void executeSessionThree() { // Third session of WebDriver System.setProperty("webdriver.chrome.driver", "chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("https://demo.guru99.com/V4/"); driver.findElement(By.name("uid")).sendKeys("Driver 3"); } }
TestNG.XML
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="TestSuite" thread-count="3" parallel="methods"> <test name="testGuru"> <classes> <class name="TestGuru99MultipleSession"/> </classes> </test> </suite>
Testjuhtumite järjekord ja sõltuvus
Saate määrata järjekorra ja sõltuvuse testjuhtum teostus. Oletame, et teil on kaks testijuhtumit, testGuru99TC1 ja testGuru99TC2, ja sa tahad testGuru99TC2 jooksma ette testGuru99TC1. Kasuta dependsOnMethods atribuut (või dependsOnGroups rühmataseme aheldamise jaoks), et see järjekord fikseerida. Laiema jaoks automatiseerimise raamistik kujunda, võrdle JUnit vs TestNGja vaadake üle leiaElement viide, kui teie sõltuvad testid jagavad lokaatoreid.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="TestSuite" thread-count="3" parallel="methods"> <test name="testGuru"> <classes> <class name="TestGuru99MultipleSession"> <include name="testGuru99TC1" dependsOnMethods="testGuru99TC2"/> <include name="testGuru99TC2"/> </class> </classes> </test> </suite>
. TestNG käitusaeg, majutatud aadressil testng.org, hindab neid deklaratsioone enne lõimede käivitamist, seega sõltuvad meetodid käivituvad alati pärast nende eeltingimuste täitumist.





