Eksekusi Paralel di Selenium: Penanganan Sesi & Ketergantungan TestNG

Daftar Isi:

Anonim

Untuk memahami cara menjalankan skrip secara paralel, pertama-tama mari kita pahami

Mengapa kita membutuhkan Penanganan Sesi?

Selama eksekusi uji, 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 itu, kami memerlukan mekanisme di mana dua eksekusi berbeda tidak boleh saling tumpang tindih. Ini dapat dicapai dengan menggunakan Penanganan Sesi di Selenium.

Bagaimana cara mencapai Penanganan Sesi di Selenium WebDriver?

Jika Anda memeriksa kode sumber Selenium WebDriver, Anda akan menemukan variabel bernama 'sessionId'. Setiap kali kami membuat instance baru dari objek WebDriver, 'sessionId' baru akan dibuat dan dilampirkan dengan Driver Firefox / Chrome / IE () tersebut.

Jadi apa pun yang kita lakukan setelah ini hanya akan dijalankan di sesi browser Firefox tertentu.

Karena ini adalah fungsionalitas built-in, tidak ada kebutuhan eksplisit untuk menetapkan id sesi

Contoh Kode: Di sini dua sesi berbeda akan dibuat untuk dua WebDriver berbeda.

import org.openqa.selenium.WebDriver;impor org.openqa.selenium.firefox.FirefoxDriver;kelas publik SessionHandling {public static void main (String… strings) {// Sesi pertama WebDriverDriver WebDriver = FirefoxDriver baru ();// Kunjungi situs guru99driver.get ("http://demo.guru99.com/V4/");// Sesi kedua WebDriverWebDriver driver2 = baru FirefoxDriver ();// Kunjungi situs guru99driver2.get ("http://demo.guru99.com/V4/");}}

Bagaimana menjalankan Tes Paralel dengan Selenium

Ada situasi di mana 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 pengujian di dalam tag dari file xml Pengujian akan berjalan paralel.
kelas Semua kasus pengujian di dalam kelas Java akan berjalan paralel
metode Semua metode dengan anotasi @Test akan dijalankan secara paralel.
contoh Kasus pengujian dalam contoh yang sama akan dijalankan secara paralel tetapi dua metode dari dua contoh yang berbeda akan berjalan di utas yang berbeda.

Atribut thread-count memungkinkan Anda menentukan berapa banyak thread yang harus dialokasikan untuk eksekusi ini.

Contoh Lengkap: Pada Contoh ini, tiga test case akan berjalan paralel dan mengisi data login di http://demo.guru99.com

Proyek Lengkap akan terlihat seperti:

TestGuru99MultipleSession.java

import org.openqa.selenium.WebDriver;impor org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.Test;public class TestGuru99MultipleSession {@Ujipublic void executSessionOne () {// Sesi pertama WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Driver WebDriver = new ChromeDriver ();// Kunjungi situs guru99driver.get ("http://demo.guru99.com/V4/");// temukan kotak teks nama pengguna dan isidriver.findElement (By.name ("uid")). sendKeys ("Driver 1");}@Ujipublic void executeSessionTwo () {// Sesi kedua WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Driver WebDriver = new ChromeDriver ();// Kunjungi situs guru99driver.get ("http://demo.guru99.com/V4/");// temukan kotak teks nama pengguna dan isidriver.findElement (By.name ("uid")). sendKeys ("Driver 2");}@Ujipublic void executSessionThree () {// Sesi ketiga WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Driver WebDriver = new ChromeDriver ();// Kunjungi situs guru99driver.get ("http://demo.guru99.com/V4/");// temukan kotak teks nama pengguna dan isidriver.findElement (By.name ("uid")). sendKeys ("Driver 3");}}

TestNG.XML

Urutan Kasus Uji dan Ketergantungan

Anda dapat mengatur urutan dan ketergantungan eksekusi Kasus Uji.

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 'dependOnMethods' untuk membuat ketergantungan dan urutan eksekusi.

Ringkasan

  • SessionID baru dibuat untuk instance baru WebDriver.
  • Satu sesi akan terikat dengan satu browser tertentu.
  • Menggunakan atribut utas dan paralel, Anda menjalankan skrip Anda secara paralel.
  • Anda dapat menggunakan ketergantungan atribut untuk mengatur perintah untuk menguji eksekusi