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.

Penanganan Sesi

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().

Mencapai Penanganan Sesi di Selenium webdriver

Jadi apapun yang kita lakukan setelah ini hanya akan dieksekusi pada hal tersebut Firefox sesi peramban.

Mencapai Penanganan Sesi di Selenium webdriver

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”.

Jalankan Tes Paralel dengan Selenium

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:

Jalankan Tes Paralel dengan Selenium

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