Tech

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.

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ị:

testsTấ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.
classesTất cả các trường hợp thử nghiệm bên trong một lớp Java sẽ chạy song song
methodsTất cả các phương thức với chú thích @Test sẽ thực thi song song.
instancesCá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

Blog Tiền Điện Tử

Blog tiền điện tử công thông tin tổng hợp uy tín nhất tất cả các mảng xã hội, giáo dục , công nghệ số. Với khả năng số hóa mạnh mẽ hy vọng sẽ mang lại cho quý bạn đọc những thông tin chính xác nhất 24/24
Back to top button