Thực thi song song trong Selenium
⚡ Tóm tắt thông minh
Phiên, chạy song song và sự phụ thuộc trong Selenium kết hợp một sessionId duy nhất cho mỗi phiên bản WebDriver với TestNG Các điều khiển của bộ công cụ cho phép nhiều cửa sổ trình duyệt chạy các tập lệnh độc lập hoặc theo thứ tự cùng một lúc và hoàn thành chu trình kiểm thử hồi quy nhanh hơn.

Để hiểu cách chạy các tập lệnh song song, trước tiên bạn cần biết cách... Selenium Tách biệt từng trình duyệt thông qua các phiên.
Tại sao chúng ta cần Xử lý phiên?
Trong quá trình thực hiện kiểm thử, Selenium WebDriver phải tương tác với trình duyệt ở mọi bước để thực thi các lệnh đã cho. Trong khi quá trình kiểm thử đó đang chạy, một người dùng khác có thể khởi chạy một kịch bản thứ hai trên cùng một máy và cùng loại trình duyệt.
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ông chồng chéo lên nhau. Selenium Giải quyết vấn đề này thông qua việc xử lý phiên.
Cách đạt được Xử lý phiên trong Selenium Trình điều khiển Web?
Nếu bạn kiểm tra Selenium Trong mã nguồn WebDriver, bạn sẽ tìm thấy một biến có tên là... sessionIdMỗi lần bạn tạo một phiên bản WebDriver mới, một quy trình mới sẽ được thực thi. sessionId được tạo ra và gắn vào đó FirefoxTrình điều khiển Chrome hoặc IE.
Mỗi lệnh tiếp theo chỉ được thực thi trong phiên trình duyệt cụ thể đó.
Vì chức năng này đã được tích hợp sẵn trong WebDriver, nên không cần phải gán sessionId thủ công.
Code Ví dụ: Hai phiên làm việc khác nhau được tạo ra cho hai phiên bản WebDriver.
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(); // Go to guru99 demo site driver.get("https://demo.guru99.com/V4/"); // Second session of WebDriver WebDriver driver2 = new FirefoxDriver(); // Go to guru99 demo site driver2.get("https://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 bài kiểm tra cùng một lúc, chẳng hạn như kiểm tra khả năng tương thích trình duyệt hoặc các phòng hút thuốc lớn.
Trong những trường hợp như vậy, parallel thuộc tính trên TestNG Thẻ suite thực hiện công việc đó.
Thuộc tính song song của thẻ suite chấp nhận bốn giá trị:
| Giá trị thuộc tính | Ý nghĩa |
|---|---|
| kiểm tra | Tất cả trường hợp thử nghiệm bên trong thẻ của thử nghiệm Tệp XML được chạy song song. |
| các lớp học | Tất cả các trường hợp thử nghiệm bên trong một Java Các lớp học được thực hiện song song. |
| phương pháp | Tất cả các phương thức được chú thích bằng @Test đều được thực thi song song. |
| trường hợp | Các bài kiểm tra trong cùng một phiên bản được chạy song song, trong khi hai phương thức của hai phiên bản khác nhau chạy trong các luồng khác nhau. |
thread-count Thuộc tính này quyết định số lượng luồng được phân bổ cho quá trình thực thi đó. Hãy kết hợp nó với... TestNG khuôn khổ và cài đặt, dựng lên TestNG in Eclipse trước khi chạy. Để mở rộng quy mô vượt quá một máy duy nhất, hãy định tuyến bộ kiểm thử tương tự thông qua Selenium Lưới 4 để thực thi song song phân tán.
Ví dụ đầy đủ: ba trường hợp kiểm thử chạy song song và điền dữ liệu đăng nhập vào https://demo.guru99.com/.
Toàn bộ dự án trông như sau:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.Test; public class TestGuru99MultipleSession { @Test public void executeSessionOne() { // First session of WebDriver System.setProperty("webdriver.chrome.driver", "chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("https://demo.guru99.com/V4/"); // Find the 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(); driver.get("https://demo.guru99.com/V4/"); driver.findElement(By.name("uid")).sendKeys("Driver 2"); } @Test public void executeSessionThree() { // Third session of WebDriver System.setProperty("webdriver.chrome.driver", "chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("https://demo.guru99.com/V4/"); 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"/> </classes> </test> </suite>
Thứ tự và sự phụ thuộc của ca kiểm thử
Bạn có thể thiết lập thứ tự và sự phụ thuộc của trường hợp thử nghiệm quá trình thực thi. Giả sử bạn có hai trường hợp kiểm thử, testGuru99TC1 và testGuru99TC2, Và bạn muốn testGuru99TC2 chạy trước testGuru99TC1. Sử dụng dependsOnMethods thuộc tính (hoặc dependsOnGroups (đối với chuỗi cấp nhóm) để sửa thứ tự đó. Đối với phạm vi rộng hơn khung tự động hóa thiết kế, so sánh JUnit vs TestNGvà xem lại tìm phần tử Tham khảo xem các bài kiểm tra phụ thuộc của bạn có chung vị trí định vị hay không.
<?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 name="testGuru99TC1" dependsOnMethods="testGuru99TC2"/> <include name="testGuru99TC2"/> </class> </classes> </test> </suite>
TestNG thời gian chạy, được lưu trữ tại testng.orgNó đánh giá các khai báo này trước khi khởi chạy các luồng, do đó các phương thức phụ thuộc luôn bắt đầu sau khi các điều kiện tiên quyết của chúng hoàn tất.





