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

Mục lục:

Anonim

Để 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 Xử lý phiên?

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 Xử lý phiên trong Selenium.

Làm thế nào để đạt được Xử lý phiên 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.

nhập org.openqa.selenium.WebDriver;nhập org.openqa.selenium.firefox.FirefoxDriver;lớp công khai SessionHandling {public static void main (Chuỗi… chuỗi) {// Phiên đầu tiên của WebDriverTrình điều khiển WebDriver = mới FirefoxDriver ();// Trang web Goto guru99driver.get ("http://demo.guru99.com/V4/");// Phiên thứ hai của WebDriverWebDriver driver2 = new FirefoxDriver ();// Trang web Goto guru99driver2.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ị:

bài kiểm tra Tất cả các trường hợp thử nghiệm bên trong thẻ của tệp xml Thử nghiệm 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 lớp Java 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.
các trường hợp 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 kiểm tra 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

nhập org.openqa.selenium.WebDriver;nhập org.openqa.selenium.chrome.ChromeDriver;nhập org.testng.annotations.Test;public class TestGuru99MultipleSession {@Kiểm trapublic void executeSessionOne () {// Phiên đầu tiên của WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Trình điều khiển WebDriver = mới ChromeDriver ();// Trang web Goto guru99driver.get ("http://demo.guru99.com/V4/");// tìm hộp văn bản tên người dùng và điền vàodriver.findElement (By.name ("uid")). sendKeys ("Trình điều khiển 1");}@Kiểm trapublic void executeSessionTwo () {// Phiên thứ hai của WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Trình điều khiển WebDriver = mới ChromeDriver ();// Trang web Goto guru99driver.get ("http://demo.guru99.com/V4/");// tìm hộp văn bản tên người dùng và điền vàodriver.findElement (By.name ("uid")). sendKeys ("Trình điều khiển 2");}@Kiểm trapublic void executeSessionThree () {// Phiên thứ ba của WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Trình điều khiển WebDriver = mới ChromeDriver ();// Trang web Goto guru99driver.get ("http://demo.guru99.com/V4/");// tìm hộp văn bản tên người dùng và điền vàodriver.findElement (By.name ("uid")). sendKeys ("Trình điều khiển 3");}}

TestNG.XML

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.

Tóm lược

  • 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 chuỗi 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