Selenium - Lưới
Selenium Grid là một công cụ phân phối các bài kiểm tra trên nhiều máy vật lý hoặc máy ảo để chúng ta có thể thực thi các script song song (đồng thời). Nó tăng tốc đáng kể quá trình thử nghiệm trên các trình duyệt và trên các nền tảng bằng cách cung cấp cho chúng tôi phản hồi nhanh chóng và chính xác.
Selenium Grid cho phép chúng tôi thực hiện song song nhiều phiên bản của các bài kiểm tra WebDriver hoặc Selenium Remote Control, sử dụng cùng một cơ sở mã, do đó mã KHÔNG cần phải có trên hệ thống mà chúng thực thi. Gói selen-máy chủ-độc lập bao gồm Hub, WebDriver và Selenium RC để thực thi các tập lệnh trong lưới.
Selenium Grid có một Hub và một Node.
Hub- Hub cũng có thể được hiểu là một máy chủ đóng vai trò là điểm trung tâm nơi các phép thử sẽ được kích hoạt. Một Selenium Grid chỉ có một Hub và nó được khởi chạy trên một máy duy nhất một lần.
Node- Các nút là các cá thể Selenium được gắn vào Hub thực hiện các bài kiểm tra. Có thể có một hoặc nhiều nút trong lưới có thể thuộc bất kỳ hệ điều hành nào và có thể chứa bất kỳ trình duyệt nào được hỗ trợ Selenium.
Ngành kiến trúc
Sơ đồ sau đây cho thấy kiến trúc của Selenium Grid.
Làm việc với Grid
Để làm việc với Grid, chúng ta cần tuân theo các giao thức nhất định. Dưới đây là các bước chính liên quan đến quá trình này -
- Định cấu hình Hub
- Định cấu hình các nút
- Phát triển Tập lệnh và Chuẩn bị Tệp XML
- Thực hiện kiểm tra
- Phân tích kết quả
Hãy để chúng tôi thảo luận chi tiết từng bước này.
Định cấu hình Hub
Step 1 - Tải xuống tệp JAR độc lập của Máy chủ Selenium mới nhất từ http://docs.seleniumhq.org/download/. Tải xuống bằng cách nhấp vào phiên bản như hình dưới đây.
Step 2- Khởi động Hub bằng cách khởi chạy Selenium Server bằng lệnh sau. Bây giờ chúng ta sẽ sử dụng cổng '4444' để khởi động trung tâm.
Note - Đảm bảo rằng không có ứng dụng nào khác đang chạy trên cổng # 4444.
java -jar selenium-server-standalone-2.25.0.jar -port 4444 -role hub -nodeTimeout 1000
Step 3 - Bây giờ mở trình duyệt và điều hướng đến URL http // localhost: 4444 từ Hub (Hệ thống mà bạn đã thực hiện Bước # 2).
Step 4- Bây giờ hãy nhấp vào liên kết 'bảng điều khiển' và nhấp vào 'xem cấu hình'. Cấu hình của trung tâm sẽ được hiển thị như sau. Hiện tại, chúng tôi chưa có bất kỳ nút nào, do đó chúng tôi sẽ không thể xem chi tiết.
Định cấu hình các nút
Step 1- Đăng nhập vào nút (nơi bạn muốn thực thi các tập lệnh) và đặt 'selenium-server-standalone-2.42.2' trong một thư mục. Chúng ta cần trỏ đến JAR selen-máy chủ-độc lập trong khi khởi chạy các nút.
Step 2 - Khởi chạy FireFox Node bằng lệnh dưới đây.
java -jar D:\JAR\selenium-server-standalone-2.42.2.jar
-role node -hub http://10.30.217.157:4444/grid/register
-browser browserName = firefox -port 5555
Ở đâu,
D: \ JAR \ selenium-server-standalone-2.42.2.jar = Vị trí của Tệp Jar độc lập của Máy chủ Selenium (trên Máy nút)
http://10.30.217.157:4444 = Địa chỉ IP của Trung tâm và 4444 là cổng của Trung tâm
browserName = firefox (Tham số để chỉ định tên Trình duyệt trên Nodes)
5555 = Cổng mà Firefox Node sẽ được thiết lập và chạy.
Step 3- Sau khi thực hiện lệnh, quay lại Hub. Điều hướng đến URL - http://10.30.217.157:4444 và Hub bây giờ sẽ hiển thị nút được gắn với nó.
Step 4- Bây giờ chúng ta hãy khởi chạy Internet Explorer Node. Để khởi chạy IE Node, chúng ta cần tải xuống trình điều khiển Internet Explorer trên máy node.
Step 5 - Để tải xuống trình điều khiển Internet Explorer, hãy điều hướng đến http://docs.seleniumhq.org/download/và tải xuống tệp thích hợp dựa trên kiến trúc của hệ điều hành của bạn. Sau khi bạn đã tải xuống, hãy giải nén tệp exe và đặt trong đó một thư mục phải được giới thiệu trong khi khởi chạy các nút IE.
Step 6 - Khởi chạy IE bằng lệnh sau.
C:\>java -Dwebdriver.ie.driver = D:\IEDriverServer.exe
-jar D:\JAR\selenium-server-standalone-2.42.2.jar
-role webdriver -hub http://10.30.217.157:4444/grid/register
-browser browserName = ie,platform = WINDOWS -port 5558
Ở đâu,
D: \ IEDriverServer.exe = Vị trí của Trình điều khiển IE đã tải xuống (trên Máy nút)
D: \ JAR \ selenium-server-standalone-2.42.2.jar = Vị trí của Tệp Jar độc lập của Máy chủ Selenium (trên Máy nút)
http://10.30.217.157:4444 = Địa chỉ IP của Trung tâm và 4444 là cổng của Trung tâm
browserName = tức là (Tham số để chỉ định tên Trình duyệt trên Nodes)
5558 = Cổng mà IE Node sẽ được thiết lập và chạy trên đó.
Step 7- Sau khi thực hiện lệnh, quay lại Hub. Điều hướng đến URL - http://10.30.217.157:4444 và Hub bây giờ sẽ hiển thị nút IE được đính kèm với nó.
Step 8- Bây giờ chúng ta hãy khởi chạy Chrome Node. Để khởi chạy Chrome Node, chúng tôi cần tải xuống trình điều khiển Chrome trên máy node.
Step 9 - Để tải xuống Trình điều khiển Chrome, hãy điều hướng đến http://docs.seleniumhq.org/download/ và sau đó điều hướng đến khu vực Trình điều khiển trình duyệt bên thứ ba và nhấp vào số phiên bản '2.10' như được hiển thị bên dưới.
Step 10- Tải xuống trình điều khiển dựa trên loại hệ điều hành của bạn. Chúng tôi sẽ thực thi nó trên môi trường Windows, do đó chúng tôi sẽ tải xuống Trình điều khiển Windows Chrome. Sau khi bạn đã tải xuống, hãy giải nén tệp exe và đặt nó vào một thư mục phải được giới thiệu trong khi khởi chạy các nút chrome.
Step 11 - Khởi chạy Chrome bằng lệnh sau.
C:\>java -Dwebdriver.chrome.driver = D:\chromedriver.exe
-jar D:\JAR\selenium-server-standalone-2.42.2.jar
-role webdriver -hub http://10.30.217.157:4444/grid/register
-browser browserName = chrome, platform = WINDOWS -port 5557
Ở đâu,
D: \ chromedriver.exe = Vị trí của trình điều khiển chrome đã tải xuống (trên Node Machine)
D: \ JAR \ selenium-server-standalone-2.42.2.jar = Vị trí của Tệp Jar độc lập của Máy chủ Selenium (trên Máy nút)
http://10.30.217.157:4444 = Địa chỉ IP của Trung tâm và 4444 là cổng của Trung tâm
browserName = chrome (Tham số để chỉ định tên Trình duyệt trên Nodes)
5557 = Cổng mà Chrome Node sẽ được thiết lập và chạy trên đó.
Step 12- Sau khi thực hiện lệnh, quay lại Hub. Điều hướng đến URL - http://10.30.217.157:4444 và Hub bây giờ sẽ hiển thị nút chrome được gắn vào nó.
Phát triển Tập lệnh và Chuẩn bị Tệp XML
Step 1- Chúng tôi sẽ phát triển một bài kiểm tra bằng TestNG. Trong ví dụ sau, chúng tôi sẽ khởi chạy từng trình duyệt đó bằng cách sử dụng webDriver từ xa. Nó có thể truyền các khả năng của họ cho trình điều khiển để trình điều khiển có tất cả thông tin để thực thi trên các nút.
Thông số Trình duyệt sẽ được chuyển từ tệp "XML".
package TestNG;
import org.openqa.selenium.*;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import java.net.MalformedURLException;
public class TestNGClass {
public WebDriver driver;
public String URL, Node;
protected ThreadLocal<RemoteWebDriver> threadDriver = null;
@Parameters("browser")
@BeforeTest
public void launchapp(String browser) throws MalformedURLException {
String URL = "http://www.calculator.net";
if (browser.equalsIgnoreCase("firefox")) {
System.out.println(" Executing on FireFox");
String Node = "http://10.112.66.52:5555/wd/hub";
DesiredCapabilities cap = DesiredCapabilities.firefox();
cap.setBrowserName("firefox");
driver = new RemoteWebDriver(new URL(Node), cap);
// Puts an Implicit wait, Will wait for 10 seconds before throwing exception
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// Launch website
driver.navigate().to(URL);
driver.manage().window().maximize();
} else if (browser.equalsIgnoreCase("chrome")) {
System.out.println(" Executing on CHROME");
DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setBrowserName("chrome");
String Node = "http://10.112.66.52:5557/wd/hub";
driver = new RemoteWebDriver(new URL(Node), cap);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// Launch website
driver.navigate().to(URL);
driver.manage().window().maximize();
} else if (browser.equalsIgnoreCase("ie")) {
System.out.println(" Executing on IE");
DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setBrowserName("ie");
String Node = "http://10.112.66.52:5558/wd/hub";
driver = new RemoteWebDriver(new URL(Node), cap);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// Launch website
driver.navigate().to(URL);
driver.manage().window().maximize();
} else {
throw new IllegalArgumentException("The Browser Type is Undefined");
}
}
@Test
public void calculatepercent() {
// Click on Math Calculators
driver.findElement(By.xpath(".//*[@id = 'menu']/div[3]/a")).click();
// Click on Percent Calculators
driver.findElement(By.xpath(".//*[@id = 'menu']/div[4]/div[3]/a")).click();
// Enter value 10 in the first number of the percent Calculator
driver.findElement(By.id("cpar1")).sendKeys("10");
// Enter value 50 in the second number of the percent Calculator
driver.findElement(By.id("cpar2")).sendKeys("50");
// Click Calculate Button
// driver.findElement(By.xpath(".//*[@id = 'content']/table/tbody/tr/td[2]/input")).click();
// Get the Result Text based on its xpath
String result =
driver.findElement(By.xpath(".//*[@id = 'content']/p[2]/span/font/b")).getText();
// Print a Log In message to the screen
System.out.println(" The Result is " + result);
if(result.equals("5")) {
System.out.println(" The Result is Pass");
} else {
System.out.println(" The Result is Fail");
}
}
@AfterTest
public void closeBrowser() {
driver.quit();
}
}
Step 2- Tham số Trình duyệt sẽ được chuyển bằng XML. Tạo một XML trong thư mục dự án.
Step 3 - Chọn 'Tập tin' từ 'Chung' và nhấp vào 'Tiếp theo'.
Step 4 - Nhập tên của tệp và nhấp vào 'Hoàn tất'.
Step 5 - TestNg.XML được tạo trong thư mục dự án như hình dưới đây.
Step 6- Nội dung của tệp XML được hiển thị bên dưới. Chúng tôi tạo 3 bài kiểm tra và đặt chúng trong một bộ và đề cập đến song song = "tests" để tất cả các bài kiểm tra sẽ được thực hiện song song.
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name = "Suite" parallel = "tests">
<test name = "FirefoxTest">
<parameter name = "browser" value = "firefox" />
<classes>
<class name = "TestNG.TestNGClass" />
</classes>
</test>
<test name = "ChromeTest">
<parameter name = "browser" value = "chrome" />
<classes>
<class name = "TestNG.TestNGClass" />
</classes>
</test>
<test name = "IETest">
<parameter name = "browser" value = "ie" />
<classes>
<class name = "TestNG.TestNGClass" />
</classes>
</test>
</suite>
Thực hiện kiểm tra
Step 1- Chọn XML đã tạo; nhấp chuột phải và chọn 'Run As' >> 'TestNG Suite'.
Step 2- Bây giờ hãy mở Node, nơi chúng ta đã khởi chạy tất cả các nút của trình duyệt. Bạn sẽ thấy cả ba trình duyệt được thực thi đồng thời.
Phân tích kết quả
Step 1- Sau khi thực hiện xong, chúng ta có thể phân tích kết quả giống như bất kỳ lần thực hiện nào khác. Tóm tắt kết quả được in trong bảng điều khiển như thể hiện trong ảnh chụp nhanh sau.
Step 2 - Điều hướng đến Tab 'Kết quả của Running Suite' và TestNG sẽ hiển thị tóm tắt kết quả như hình dưới đây.
Step 3 - Sau khi tạo HTML, chúng tôi sẽ có thể xem kết quả kiểm tra ở định dạng HTML.