Thực thi song song trong Selenium : Session Handling và TestNG Dependency
Để hiểu cách chạy các tập lệnh song song, trước tiên chúng ta hãy hiểu
Tại sao chúng ta cần Session Handling?
Trong quá trình thực thi kiểm tra, Selenium WebDriver phải tương tác với trình duyệt mọi lúc để thực hiện các lệnh nhất định. Tại thời điểm thực thi, cũng có thể trước khi quá trình thực thi hiện tại hoàn tất, người khác bắt đầu thực thi một tập lệnh khác, trong cùng một máy và trong cùng một loại trình duyệt.
- Cách làm trà bí đao hạt chia la hán quả giảm cân, thanh nhiệt tại nhà
- Người hâm mộ sẽ được hóa thân thành Gollum trong Chúa Nhẫn vào đầu tháng 9 tới đây
- Review The Time It Takes: Lãng mạn, kịch tính và đau lòng trên Netflix
- Hoàn Nguyên Tịnh thất Bồng Lai là ai? Thân thế ‘sư thầy’ tự xưng triệu view
- Hướng dẫn tra cứu mã số sổ hộ khẩu điện tử trực tuyến

Trong tình huống như vậy, chúng ta cần một cơ chế để hai quá trình thực thi khác nhau của chúng ta không được trùng lặp với nhau. Điều này có thể đạt được bằng cách sử dụng Session Handling trong Selenium.
Làm thế nào để đạt được Session Handling trong Selenium WebDriver?
Nếu bạn kiểm tra mã nguồn của Selenium WebDriver, bạn sẽ tìm thấy một biến có tên là ‘sessionId’. Bất cứ khi nào chúng tôi tạo một phiên bản mới của đối tượng WebDriver, một ‘sessionId’ mới sẽ được tạo và đính kèm với Trình điều khiển Firefox / Chrome / IE cụ thể đó ().

Vì vậy, bất cứ điều gì chúng tôi làm sau đó sẽ chỉ thực thi trong phiên trình duyệt Firefox cụ thể đó.

Vì đây là một chức năng được tích hợp sẵn nên không cần chỉ định rõ ràng id phiên
Ví dụ về mã: Ở đây hai phiên khác nhau sẽ được tạo cho hai WebDriver khác nhau.
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(“http://demo.guru99.com/V4/”);
//Second session of WebDriver
WebDriver driver2 = new FirefoxDriver();
//Goto guru99 site
driver2.get(“http://demo.guru99.com/V4/”);
}
}
Cách chạy Thử nghiệm song song với Selenium
Có những trường hợp bạn muốn chạy nhiều thử nghiệm cùng một lúc.
Trong những trường hợp như vậy, người ta có thể sử dụng thuộc tính “song song”

Thuộc tính song song của thẻ suite có thể chấp nhận bốn giá trị:
tests | Tất cả các trường hợp thử nghiệm bên trong thẻ <test> của tệp xml Thử nghiệm sẽ chạy song song. |
classes | Tất cả các trường hợp thử nghiệm bên trong một lớp Java sẽ chạy song song |
methods | Tất cả các phương thức với chú thích @Test sẽ thực thi song song. |
instances | Các trường hợp kiểm thử trong cùng một trường hợp sẽ thực thi song song nhưng hai phương thức của hai trường hợp khác nhau sẽ chạy trong luồng khác nhau. |
Thuộc tính thread-count cho phép bạn chỉ định bao nhiêu luồng nên được cấp phát cho việc thực thi này.
Ví dụ hoàn chỉnh: Trong ví dụ này, ba trường hợp thử nghiệm sẽ chạy song song và điền dữ liệu đăng nhập vào http://demo.guru99.com
Dự án Hoàn chỉnh sẽ giống như sau:

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(“http://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(“http://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(“http://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>
Thứ tự và sự phụ thuộc của Test Case
Bạn có thể đặt thứ tự và sự phụ thuộc của việc thực thi Test Case .
Giả sử bạn có hai trường hợp thử nghiệm, ‘testGuru99TC1’ và ‘testGuru99TC2’ và bạn muốn thực thi trường hợp thử nghiệm ‘testGuru99TC2’ trước ‘testGuru99TC1’. Trong trường hợp đó, chúng tôi sẽ sử dụng thuộc tính ‘dependOnMethods’ để tạo sự phụ thuộc và thứ tự thực hiện.
<?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>
Bản tóm tắt
- Một sessionID mới được tạo cho một phiên bản mới của WebDriver.
- Một phiên sẽ liên kết với một trình duyệt cụ thể.
- Sử dụng thuộc tính và song song, bạn chạy các tập lệnh của mình song song.
- Bạn có thể sử dụng thuộc tính phụ thuộc để đặt thứ tự để kiểm tra việc thực thi