作為測試人員或熟練的網絡開發者,您需要為您的應用程序測試漏洞和在各個可用的瀏覽器和操作系統上的性能。但是由於手上有那麼多的依賴性,不僅有不同的瀏覽器,還有不同的版本,這肯定是一個沉重的任務。
最重要的是,所有這些流程必須尽可能地自動化,因為在主流公司中,單獨創建測試案例和管道將是昂貴的,最明显、最不喜歡的方法。現在,這就是Selenium Grid介入的地方,它是一個廣泛使用的基於服務器的測試自動化工具。
Selenium Grid是什麼?
Selenium Grid 是一個用於在一個以上的瀏覽器和環境中並行和持續測試的工具。它允許您同時在不同的電腦上對不同的瀏覽器和操作系統進行測試。Selenium Grid 的目的是將測試執行負荷分發到多台電腦,使其能夠更快地執行大量測試。
Selenium Grid 的結構主要涉及一個中心節點和很多節點。中心節點作為一個集中的點,測試請求需要發送至此。節點是測試正在執行的電腦(實體或虛擬)。中心節點根據測試腳本中指定的期望瀏覽器和平台配置將測試執行請求路由到適當的節點。
Selenium Grid 支援各種配置和 分佈式測試 ,包括並行執行和選擇性瀏覽器功能測試。它常用於 自動測試 ,以确保不同瀏覽器和平台之間的兼容性和功能。
為什麼需要 Selenium Grid?
你可能非常想知道我們為什麼需要它。具體來說,它屬於 Selenium 套件,該套件還包括其他軟件和功能,如 Selenium WebDriver 和 Selenium IDE,我們看到了它如何支持 Chrome、Microsoft Edge、Opera、Safari 及其所有不同版本。除此之外,它還可以在多個操作系統上運行這些瀏覽器,創建一個 端到端測試 環境。由於它是開源的,因此也完全免费,並以最快速的更新和發展,並提供所有信息的完全 accessibility。
Selenium Grid 結構
讓我們了解 Selenium Grid 的結構。Selenium Grid 採用 Hub 和 Node 模型的運作方式,其中一个 Hub 連接到多個 Node,並可以運行在不同的機器、瀏覽器和它們的不同版本上。
Hub 是 Selenium Grid 中的中心點,負責路由測試命令到節點。它還會從客戶端收取測試請求,並將它們傳送到所需的節點。Hub 在一台具有確定操作系統和瀏覽器的單一機器上啟動,該瀏覽器配有完整的測試瀏覽器和它們的版本,並且還具有在運行兼容操作系統的多個設備上設置的能力。
Selenium 也在架構中定了其他組件,這些在它的網站上都有詳細解釋,這對於運行完整分佈式的 Selenium 有幫助,其中包含了路由器、會話和分配器都被好好定義。現在我們已經有足夠的背景知識了解了 SeleniumGrid,
Selenium Grid 可以用 4個簡單步驟來安裝和使用
步驟 1
在步驟 1,讓我們快速設定前提條件。
首先,我們需要確保我們正在運行最新版本的Java,或者是 Java 11 及以上版本。這可以從官方網站下載。
然後我們需要安裝所有需要的瀏覽器,我們希望在其中進行測試。我們將使用版本123的Chrome瀏覽器驅動程式來訪問Chrome瀏覽器。同時,請記住驱動程式和瀏覽器的版本應該相同才能運行Selenium服務器。最後,我將使用Eclipse IDE,因為這個示例將基於Java。這個IDE可以從官方Eclipse網站下載。
最後的前提條件,我們需要從Selenium官方網站下載最新的Selenium Grid伺服器。
步驟2
現在我們開始步驟2。對於步驟2,我已經創建了一個新文件夾,並將我將用於此演示的Selenium伺服器和Chrome驾驶程序複製到其中。
package Selenium_test1 ;
import java.net.MalformedURLException;
public class test1{
String hubUrl ="https://10.20.31.20";
String url ="https://www.world.co/search";
WebDriver driver;
public void setupGrid()
{
DesiredCapabilities ds= new DesiredCapabilities();
ds.setCapability("browserName", "Chrome");
try{
driver = new RemoteWebDriver( new URL(hubUrl),ds);
} catch (malformedURLException e){
e.printSTackTrace();
}
driver.get(url);
}
public void pageTitleValidation(){
String title = driver.getTitle();
System.out.println("page title :" +title);
}
public static void main(String[] args)
{
test1 obj = new test1();
obj.setupGrid();
obj.pageTitleValidation();
}
}
步驟3
現在是步驟3,我已打開我的Eclipse IDE,並使用WebDriver撰寫了我的測試案例。我們將查看其他人之於新的Maven項目。除彼之外,我還需要將將用於特定文件夾中的Chrome驾驶程序複製過來。所使用的Selenium伺服器版本將通過我現在將遵循的步驟,上傳至此项目的路径。我能夠將我的項目名稱向下拖動,點擊,然後轉向建立路徑。從這裡,我能夠向下拖動至配置建立路徑,而在右側,我將看到一個稱為添加外部嘴巴的選項。從這裡我能夠添加我所使用的Selenium伺服器。
點擊應用並關閉,然後讓我們转到步驟4。
步驟4
現在是步驟4,我回到了我在步驟2中做的文件夾。這裡,我將使用命令提示符。
這讓尋找文件夾變得非常簡單,並且是一個簡單的過程。由於這只是單台機器和一個瀏覽器,我將使用Selenium Edge Sandaland模式。
伺服器現在正在啟動。它逐一添加所需的依賴,並已完成process。它給我們指定了個特定的地址前往。現在我將复制此地址並返回步驟3。這裡,在中心URL中,我將貼上此地址,在我的代碼完成後,我將前往文件並運行此作為應用程式。
好吧,既然我看到應用程式正在運行,我將转到我的Chrome瀏覽器,並貼上我從命令提示符那裡得到的地址。這是我的Selenium地址,我看到會话正在進行。在概览中,我可以看到為Chrome創建的完整 stereotypes。在會话中,我的默認測試案例正在運行。您也可以看到網頁。
Grid角色
Grid由六个不同的组件组成,为您提供了多种部署测试自动化运行的方式。您可以单独启动它们,也可以将它们作为中心组件组在一起,或者我们可以在单台机器上运行它们。
1. 独立
Grid的所有组件无缝集成,独立
作为一个统一的实体运行。通过启动独立
模式,您可以轻松部署一个完全可用的Grid,只需一个命令,所有都在一个进程中。请注意独立
仅限于在单台机器上运行。
java -jar selenium-server-<version>.jar standalone
2. 中心和节点
中心和节点是最受欢迎且广泛使用的组件。它们允许用户将不同机器、不同操作系统和浏览器版本组合在一起。由于这一点,您将获得一个入口,在多个环境中运行webdriver测试。
hub
是由 路由器
、分配器
、事件總線
和 會話队列
组成的:
java -jar selenium-server-<version>.jar hub
node
从系統路徑中检测到多个可用的驱动程序。
java -jar selenium-server-<version>.jar node
总结
最后,总结起来,Selenium Grid 利用 hub-node 架构简化了在多个浏览器和平台上并行执行多个测试的过程。中心枢纽作为存放测试的中央存储库,节点作为 Selenium 实例,按照枢纽的指示执行这些测试。安装 Selenium Grid 包括下载 Selenium Server 的 jar 文件,这个文件也用于运行 Selenium RC 测试。要验证中心枢纽是否正常运作,可以通过命令提示符或网页浏览器来实现。要在 Grid 上执行测试脚本,需要使用 DesiredCapabilities
和 RemoteWebDriver
对象。DesiredCapabilities
用于配置用于自动化的浏览器类型和操作系统,而 RemoteWebDriver
用于指定执行测试的节点或机器。