Thực thi song song trong Selenium: Xử lý phiên & TestNG Phụ thuộc

Để hiểu cách chạy song song các tập lệnh, trước tiên chúng ta hãy hiểu

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 luôn tương tác với trình duyệt để thực thi các lệnh đã cho. 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 sẽ 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.

Xử lý phiên

Trong tình huống như vậy, chúng ta cần một cơ chế để hai lần thực thi khác nhau của chúng ta không bị trùng lặp với nhau. Điều này có thể đạt được bằng cách sử dụng Xử lý phiên trong Selenium.

Cách đạt được Xử lý phiên trong Selenium Trình điều khiển Web?

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 đối tượng cụ thể đó Firefox/Trình điều khiển Chrome/IE ().

Đạt được khả năng xử lý phiên trong Selenium webdriver

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

Đạt được khả năng xử lý phiên trong Selenium webdriver

Vì đây là chức năng được xây dựng sẵn nên không cần phải gán id phiên một cách rõ ràng

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”

Chạy thử nghiệm song song với Selenium

Thuộc tính song song của thẻ bộ có thể chấp nhận bốn giá trị:

kiểm tra Tất cả các trường hợp thử nghiệm bên trong thẻ của Kiểm tra Tệp xml sẽ 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 lớp sẽ chạy song song
phương pháp Tất cả các phương thức có chú thích @Test sẽ thực thi song song.
trường hợp Các trường hợp thử nghiệm trong cùng một phiên bản sẽ thực thi song song nhưng hai phương thức của hai phiên bản khác nhau sẽ chạy trong các luồng khác nhau.

Thuộc tính thread-count cho phép bạn chỉ định số lượng luồng sẽ được phân bổ 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ẽ trông như sau:

Chạy thử nghiệm song song với 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("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 ca kiểm thử

Bạn có thể đặt thứ tự và sự phụ thuộc của Trường hợp thử nghiệm chấp hành.

Giả sử bạn có hai trường hợp kiểm thử, 'testGuru99TC1' và 'testGuru99TC2' và bạn muốn thực thi trường hợp kiểm thử 'testGuru99TC2' trước 'testGuru99TC1'. Trong trường hợp đó, chúng tôi sẽ sử dụng thuộc tính 'dependsOnMethods' để 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>

Tổng kết

  • SessionID mới được tạo cho phiên bản WebDriver mới.
  • Một phiên sẽ liên kết với một trình duyệt cụ thể.
  • Sử dụng chuỗi thuộc tính và song song, bạn chạy song song các tập lệnh của mình.
  • Bạn có thể sử dụng phụ thuộc thuộc tính để đặt thứ tự thực hiện kiểm tra