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.

  • 🧩 Põhiprintsiip: Iga uus WebDriveri eksemplar genereerib uue seansi ID, seega kaks draiverit ei jaga kunagi samas masinas käske ega küpsiseid.
  • ⚙️ Rakendamine: Määrake parallel=”methods” (või test, klass, eksemplar) pluss lõimede arv TestNG testng.xml-i komplektisilt, et teostust hajutada.
  • 🧵 Paralleelsus: Kasutage iga @Test meetodi kohta ühte WebDriverit, et vältida võidujooksutingimusi jagatud brauseriakendes samaaegsete käitamiste ajal.
  • 🔗 Sõltuvus: DependsOnMethods abil järjestatud testid failis testng.xml sisaldavad silte või @Test annotatsiooni, kui üks meetod peab eelnema teisele.
  • 🤖 Tehisintellekti kasutamine: Kaasaegsed tehisintellekti abilised ennustavad optimaalset lõimede arvu, grupeerivad ohutuid paralleelmeetodeid ja tuvastavad varasemate jooksuandmete põhjal ebakindlaid kandidaate.

Kuidas käivitada paralleelset täitmist Selenium

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.

Seansi käsitlemine

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.

Saavutage seansihaldus Selenium Veebidraiver

Iga järgnev käsk töötab ainult selle konkreetse brauseriseansi sees.

Saavutage seansihaldus Selenium Veebidraiver

Kuna see on WebDriverisse sisse ehitatud, pole vaja sessionId käsitsi määrata.

Code Näide: Kahe WebDriveri eksemplari jaoks genereeritakse kaks erinevat seanssi.

Sessioonikäsitlemine.java
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.

Käivitage paralleelsed testid rakendusega Selenium

Komplektsildi paralleelne atribuut aktsepteerib nelja väärtust:

Atribuudi väärtusTähendus
testidKÕIK testjuhtumid sees silt testimine XML-failid töötavad paralleelselt.
klassidKõik testid a sees Java klass käib paralleelselt.
meetodidKõik @Test-iga annoteeritud meetodid käivitatakse paralleelselt.
juhtumidSamas 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:

Käivitage paralleelsed testid rakendusega Selenium

testGuru99MultipleSession.java
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

testng.xml (paralleelsed meetodid)
<?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.

testng.xml (sõltub meetoditest)
<?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.

KKK

Seanss on unikaalne seansi ID, mis genereeritakse iga kord, kui luuakse uus WebDriveri eksemplar. Iga selle draiveri käsk suunatakse vastavasse brauseriseanssi, isoleerides ühe testi teisest.

Sildi „suite” atribuut „parallel” aktsepteerib teste, klasse, meetodeid või eksemplare. TestNG käivitab mitu lõime (määratud lõimede arvu järgi) ja käivitab valitud üksust samaaegselt, lühendades sellega kogu täitmisaega.

Kasutage atribuuti dependsOnMethods faili testng.xml include sildi sees või koodis @Test(dependsOnMethods = “name”). TestNG käivitab esmalt eeltingimuse ja jätab ebaõnnestumise korral sõltuva testi vahele.

Tehisintellekti tööriistad klastrivad seotud teste, ennustavad varasemate käituskeskkondade põhjal optimaalset lõimede arvu ja järjestavad testikomplekte ümber nii, et aeglased testid algaksid esimesena, lühendades ehitustorustiku üldist tööaega.

Jah. Tehisintellekt analüüsib kõnegraafikuid ja ajaloolisi tõrkelogisid, et soovitada dependsOnMethods linke, märgistada ringsõltuvusi ja pakkuda välja turvalisi paralleelrühmi, vähendades testng.xml käsitsi hooldamise vajadust.

Võta see postitus kokku järgmiselt: