Rinnakkaissuoritus sisään Selenium
⚡ Älykäs yhteenveto
Istunnot, rinnakkaisajo ja riippuvuudet Selenium yhdistää yksilöllisen istuntotunnuksen WebDriver-instanssia kohden TestNG sviittiohjaimia, joiden avulla useat selainikkunat voivat suorittaa itsenäisiä tai järjestettyjä komentosarjoja samanaikaisesti ja viimeistellä regressiosyklin nopeammin.

Ymmärtääksesi, miten skriptejä suoritetaan rinnakkain, sinun on ensin tiedettävä miten Selenium eristää jokaisen selaimen istuntojen mukaan.
Miksi tarvitsemme istunnonkäsittelyä?
Testin suorittamisen aikana Selenium WebDriverin on oltava vuorovaikutuksessa selaimen kanssa jokaisessa vaiheessa suorittaakseen annettuja komentoja. Testin ollessa käynnissä toinen käyttäjä voi käynnistää toisen skriptin samalla koneella ja samantyyppisellä selaimella.
Tällaisessa tilanteessa tarvitsemme mekanismin, jotta kaksi toteutusta eivät mene päällekkäin. Selenium ratkaisee tämän istunnonkäsittelyn avulla.
Kuinka saavuttaa istunnon käsittely Selenium WebDriver?
Jos tarkastat Selenium WebDriver-lähdekoodista löydät muuttujan nimeltä sessionIdJoka kerta, kun luot uuden WebDriver-instanssin, uusi sessionId se luodaan ja liitetään siihen Firefox, Chrome- tai IE-ohjain.
Jokainen seuraava komento suoritetaan vain kyseisen selainistunnon sisällä.
Koska tämä on sisäänrakennettu WebDriveriin, istuntotunnusta ei tarvitse määrittää manuaalisesti.
Code Esimerkiksi: Kaksi eri istuntoa luodaan kahdelle WebDriver-instanssille.
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/"); } }
Kuinka suorittaa rinnakkaistestejä Selenium
On tilanteita, joissa haluat suorittaa useita testejä samanaikaisesti, kuten selainten väliset tarkistukset tai suuria savuhuoneita.
Tällaisissa tapauksissa parallel attribuutti TestNG suite-tunniste hoitaa homman.
Suite-tagin parallel-attribuutti hyväksyy neljä arvoa:
| Attribuutin arvo | Merkitys |
|---|---|
| testit | Kaikki testitapaukset sisällä tagi testaus XML-tiedosto ajetaan rinnakkain. |
| luokat | Kaikki testitapaukset a:n sisällä Java luokka kulkee rinnakkain. |
| menetelmät | Kaikki @Test-merkinnällä annotoidut metodit suoritetaan rinnakkain. |
| tapauksia | Saman instanssin testit suoritetaan rinnakkain, kun taas kahden eri instanssin kaksi metodia suoritetaan eri säikeissä. |
thread-count attribuutti määrittää, kuinka monta säiettä kyseiselle suoritukselle varataan. Yhdistä se -attribuutin kanssa TestNG puitteet ja asentaa TestNG in Eclipse ennen suorittamista. Yhden koneen ulkopuolelle skaalautumiseksi reititä sama sarja Selenium Ruudukko 4 hajautettua rinnakkaissuoritusta varten.
Täydellinen esimerkki: kolme testitapausta suoritetaan rinnakkain ja täyttävät kirjautumistiedot https://demo.guru99.com/.
Koko projekti näyttää tältä:
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>
Testitapausten järjestys ja riippuvuus
Voit asettaa järjestyksen ja riippuvuuden testitapaus suoritus. Oletetaan, että sinulla on kaksi testitapausta, testGuru99TC1 ja testGuru99TC2, ja haluat testGuru99TC2 juosta ennen testGuru99TC1. Käytä dependsOnMethods attribuutti (tai dependsOnGroups ryhmätason ketjutusta varten) järjestyksen korjaamiseksi. Laajemmille automaatiokehys suunnittele, vertaa JUnit vs TestNGja tarkista findElement viittaus, jos riippuvaisilla testeilläsi on yhteisiä paikantimia.
<?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 ajonaikainen, isännöity osoitteessa testingng.org, arvioi nämä määrittelyt ennen säikeiden käynnistämistä, joten riippuvat metodit käynnistyvät aina niiden ennakkoedellytysten täyttymisen jälkeen.





