Rinnakkaissuoritus sisään Selenium
Ymmärtääksemme skriptien ajamisen rinnakkain, ymmärrämme ensin
Miksi tarvitsemme istunnonkäsittelyä?
Testin suorittamisen aikana Selenium WebDriverin on oltava vuorovaikutuksessa selaimen kanssa koko ajan suorittaakseen annettuja komentoja. Suoritushetkellä on myös mahdollista, että joku muu aloittaa toisen skriptin suorittamisen ennen kuin nykyinen suoritus on valmis, samassa koneessa ja samantyyppisessä selaimessa.
Tällaisessa tilanteessa tarvitsemme mekanismin, jolla meidän kaksi erilaista teloitusta eivät saisi mennä päällekkäin. Tämä voidaan saavuttaa käyttämällä istunnonkäsittelyä Selenium.
Kuinka saavuttaa istunnon käsittely Selenium WebDriver?
Jos tarkistat lähdekoodin Selenium WebDriver, löydät muuttujan nimeltä "sessionId". Aina kun luomme uuden WebDriver-objektin esiintymän, uusi "sessionId" luodaan ja liitetään kyseiseen tiettyyn Firefox/Chrome/IE-ohjain ().
Joten kaikki, mitä teemme tämän jälkeen, suoritetaan vain kyseisessä kohdassa Firefox selaimen istunto.
Koska tämä on sisäänrakennettu toiminto, istuntotunnusta ei tarvitse määrittää erikseen
Esimerkki koodista: Tässä luodaan kaksi eri istuntoa kahdelle eri WebDriverille.
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(); //Goto guru99 site driver.get("https://demo.guru99.com/V4/"); //Second session of WebDriver WebDriver driver2 = new FirefoxDriver(); //Goto guru99 site driver2.get("https://demo.guru99.com/V4/"); } }
Kuinka suorittaa rinnakkaistestejä Selenium
On tilanteita, joissa haluat suorittaa useita testejä samanaikaisesti.
Tällaisissa tapauksissa voidaan käyttää "rinnakkais"-attribuuttia
Suite-tunnisteen rinnakkaisattribuutti voi hyväksyä neljä arvoa:
testit | Kaikki testikotelot sisällä tunniste Testaus xml-tiedosto toimii rinnakkain. |
luokat | Kaikki testitapaukset sisällä a Java luokka kulkee rinnakkain |
menetelmät | Kaikki menetelmät, joissa on @Test-merkintä, suoritetaan rinnakkain. |
tapauksia | Saman esiintymän testitapaukset suoritetaan rinnakkain, mutta kahden eri esiintymän kaksi menetelmää suoritetaan eri säikeessä. |
Attribuutilla thread-count voit määrittää, kuinka monta säiettä tälle suoritukselle varataan.
Täydellinen esimerkki: Tässä esimerkissä kolme testitapausta suoritetaan rinnakkain ja täyttävät kirjautumistiedot https://demo.guru99.com/
Täydellinen projekti näyttää tältä:
TestGuru99MultipleSession.java
import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.Test; public class TestGuru99MultipleSession { @Test public void executSessionOne(){ //First session of WebDriver System.setProperty("webdriver.chrome.driver","chromedriver.exe"); WebDriver driver = new ChromeDriver(); //Goto guru99 site driver.get("https://demo.guru99.com/V4/"); //find 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(); //Goto guru99 site driver.get("https://demo.guru99.com/V4/"); //find user name text box and fill it driver.findElement(By.name("uid")).sendKeys("Driver 2"); } @Test public void executSessionThree(){ //Third session of WebDriver System.setProperty("webdriver.chrome.driver","chromedriver.exe"); WebDriver driver = new ChromeDriver(); //Goto guru99 site driver.get("https://demo.guru99.com/V4/"); //find user name text box and fill it 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"> </class> </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 suorittaa testitapauksen 'testGuru99TC2' ennen 'testGuru99TC1'. Siinä tapauksessa käytämme 'dependsOnMethods' -attribuuttia riippuvuuden ja suoritusjärjestyksen määrittämiseen.
<?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 value="testGuru99TC1" dependsOnMethods=" testGuru99TC2"/> <include value="testGuru99TC2"/> </class> </classes> </test> </suite>
Yhteenveto
- Uusi istuntotunnus luodaan uudelle WebDriverin esiintymälle.
- Yksi istunto sitoutuu yhteen tiettyyn selaimeen.
- Attribuuttien säiettä ja rinnakkaisuutta käyttämällä suoritat skriptejäsi rinnakkain.
- Voit käyttää attribuuttiriippuvuutta asettaaksesi järjestyksen testattavaksi