Eksekusi Paralel di Selenium
Untuk memahami cara menjalankan skrip secara paralel, mari kita pahami terlebih dahulu
Mengapa kita memerlukan Penanganan Sesi?
Selama pelaksanaan tes, Selenium WebDriver harus berinteraksi dengan browser sepanjang waktu untuk menjalankan perintah yang diberikan. Pada saat eksekusi, mungkin juga, sebelum eksekusi saat ini selesai, orang lain memulai eksekusi skrip lain, di mesin yang sama, dan di jenis browser yang sama.
Dalam situasi seperti ini, kita memerlukan sebuah mekanisme agar dua eksekusi kita yang berbeda tidak boleh saling tumpang tindih. Hal ini dapat dicapai dengan menggunakan Session Handling in Selenium.
Cara mencapai Penanganan Sesi di Selenium Pengemudi Web?
Jika Anda memeriksa kode sumber Selenium WebDriver, Anda akan menemukan variabel bernama 'sessionId'. Setiap kali kita membuat instance baru dari objek WebDriver, 'sessionId' baru akan dibuat dan dilampirkan dengan objek tersebut. Firefox/Chrome/Pengandar IE().
Jadi apapun yang kita lakukan setelah ini hanya akan dieksekusi pada hal tersebut Firefox sesi peramban.
Karena ini adalah fungsi bawaan, tidak ada kebutuhan eksplisit untuk menetapkan id sesi
Contoh Kode: Di sini dua sesi berbeda akan dihasilkan untuk dua WebDriver berbeda.
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/"); } }
Cara menjalankan Tes Paralel dengan Selenium
Ada situasi ketika Anda ingin menjalankan beberapa pengujian secara bersamaan.
Dalam kasus seperti itu, seseorang dapat menggunakan atribut “paralel”.
Atribut paralel dari tag suite dapat menerima empat nilai:
tes | Semua kasus uji di dalamnya tag dari pengujian file xml akan berjalan paralel. |
kelas-kelas | Semua kasus uji di dalam a Java kelas akan berjalan paralel |
metode | Semua metode dengan anotasi @Test akan dijalankan secara paralel. |
contoh | Kasus pengujian dalam instance yang sama akan dieksekusi secara paralel tetapi dua metode dari dua instance berbeda akan dijalankan di thread berbeda. |
Atribut thread-count memungkinkan Anda menentukan berapa banyak thread yang harus dialokasikan untuk eksekusi ini.
Contoh Lengkap: Dalam Contoh ini, tiga kasus uji akan dijalankan secara paralel dan mengisi data login https://demo.guru99.com/
Proyek Lengkap akan terlihat seperti:
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>
Urutan Kasus Uji dan Ketergantungan
Anda dapat mengatur urutan dan ketergantungan Uji Kasus eksekusi.
Misalkan Anda memiliki dua kasus uji, 'testGuru99TC1' dan 'testGuru99TC2' dan Anda ingin menjalankan kasus uji 'testGuru99TC2' sebelum 'testGuru99TC1'. Dalam hal ini kita akan menggunakan atribut 'dependsOnMethods' untuk membuat ketergantungan dan urutan eksekusi.
<?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>
Ringkasan
- SessionID baru dibuat untuk instance baru WebDriver.
- Satu sesi akan terikat dengan satu browser tertentu.
- Menggunakan atribut thread dan parallel, Anda menjalankan skrip Anda secara paralel.
- Anda dapat menggunakan ketergantungan atribut untuk mengatur urutan pengujian eksekusi