作为测试人员或熟练的网页开发者,你需要测试你的应用程序在所有可用的浏览器和操作系统中的bug和性能。但是,有了这么多依赖性在手中,不仅要测试不同的浏览器,还要测试不同版本,这肯定是一个繁重的任务。
最重要的是,所有这些过程都必须尽可能自动化,因为在大型公司中,单独创建测试用例和流水线将是昂贵的,而且最明显的是,最不喜欢的做法。现在,这就是Selenium Grid的作用所在,它是一个广泛使用的基于服务器的测试自动化工具。
什么是Selenium Grid?
Selenium Grid 是一个用于在多个浏览器和环境中并行和连续测试的工具。它允许你在不同的机器上同时运行测试,针对不同的浏览器和操作系统。Selenium Grid 的目的是将测试执行负载分布到多台机器上,从而加快大量测试的执行速度。
Selenium Grid 的架构主要涉及一个中心节点和许多节点。中心节点作为发送测试请求的中心点。节点是测试执行的机器(物理或虚拟)。中心节点根据测试脚本中指定的所需浏览器和平台配置将测试执行请求路由到适当的节点。
Selenium Grid 支持各种配置和分布式测试,包括并行执行和选择性浏览器功能测试。它通常用于自动化测试,以确保不同浏览器和平台之间的兼容性和功能。
为什么需要 Selenium Grid?
您可能非常感兴趣地了解我们为什么需要它。具体来说,它是 Selenium 套件的一部分,该套件还包括其他软件和功能,如 Selenium WebDriver 和 Selenium IDE,我们看到了它如何支持 Chrome、Microsoft Edge、Opera、Safari 及其所有不同版本。除此之外,它还可以在多个操作系统上运行这些浏览器,创建一个端到端测试环境。作为开源软件,它也免费提供,并随着最快的发展和更新而完整地获取所有信息。
Selenium Grid 架构
让我们了解一下 Selenium Grid 的架构。Selenium Grid 采用中心节点模型工作,其中一个中心连接多个节点,并可以运行在各种机器、浏览器及其不同版本上。
Selenium Grid中的Hub作为中心节点,负责将测试命令路由到节点。它还从客户端接收测试请求并将它们传递到所需的节点。Hub在具有明确操作系统和完整测试浏览器及其版本的单台机器上启动,并且还具有在运行兼容操作系统的多个设备上设置的能力。
Selenium还定义了架构中的其他组件,这些组件在其网站上详细解释,这对于运行Selenium的完全分布式模式非常有用,其中路由器、会话和分发器都定义清晰。现在我们已经对SeleniumGrid有了足够的背景知识,
Selenium Grid的安装和使用可以分为四个简单步骤
第一步
在第一步中,让我们快速设置先决条件。
首先,我们需要确保我们正在运行最新版本的Java,即Java 11及以上版本。可以从官方网站下载。
然后我们需要安装所有需要的浏览器,我们希望在上面进行测试。我们将使用版本123的Chrome浏览器驱动程序来访问Chrome浏览器。同时请记住,驱动程序和浏览器的版本应相同,才能运行Selenium服务器。最后,我将使用Eclipse IDE,因为这个演示将基于Java。这个IDE可以从Eclipse官方网站下载。
对于最后一个先决条件,我们需要从Selenium官方网站下载最新的Selenium Grid服务器。
步骤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
现在让我们进行第三步,我已打开我的Eclipse IDE,并使用WebDriver编写了我的测试用例。我们将检查与其他人相比的新Maven项目。除此之外,我还需要将Chrome驱动程序粘贴到这个特定文件夹中。正在使用中的Selenium服务器的版本将通过我即将遵循的步骤,将此项目的路径取消勾选。我可以移动到我的项目名称,右键点击,然后前往构建路径。从这里,我可以向下移动到配置构建路径,在右侧,我将看到一个名为添加外部库的选项。从这里,我可以添加我正在使用的Selenium服务器。
点击应用并关闭,然后让我们进行第四步。
步骤4
现在让我们进行第四步,我回到了我在第二步中创建的文件夹。在这里,我将使用命令提示符。
这使得查找文件夹变得非常容易,且过程简单。由于只有一台机器和一种浏览器,我将使用Selenium Edge沙盒模式。
服务器现在正在启动。它逐个添加所需的依赖项,这个过程正在完成。它给我们指定了一个特定的地址。现在我将复制这个地址并返回到第3步。在这里,在中心URL中,我将粘贴这个地址,完成我的代码后,我将去文件并运行这个应用程序。
好的,现在我看到应用程序正在运行,我将转到我的Chrome浏览器,并将我通过命令提示符得到的地址粘贴过来。这是我的Selenium地址,我看到会话正在运行。在概览中,我可以看到为Chrome创建了完整的典型。在会话中,我的默认测试用例正在运行。您也可以看到网页。
网格角色
网格由六个不同的组件组成,为您提供了多种部署测试自动化运行的方式。您可以独立启动它们,也可以将它们作为中心组件组合在一起,还可以在单台机器上运行它们。
1. 独立运行
独立运行模式无缝集成了所有网格组件,作为一个统一的实体运行。通过启动独立运行模式,您可以轻松地使用一个命令部署一个完全可操作的网格,所有操作都在一个进程内完成。请注意,独立运行模式仅限于在单台机器上运行。
java -jar selenium-server-<version>.jar standalone
2. 中心和节点
中心和节点是最受欢迎且大量使用的组件。它们允许用户将不同操作系统和浏览器版本的机器组合在一起。因此,您将获得一个入口,以便在多个环境中运行webdriver测试。
hub
由 Router
、Distributor
、Event bus
和 Session Queue
组成:
java -jar selenium-server-<version>.jar hub
node
从系统路径中检测到多个可用的驱动程序。
java -jar selenium-server-<version>.jar node
总结
最后,总结起来,Selenium Grid 利用 hub-node 架构简化了在多种浏览器和平台上并行执行多个测试的过程。中心枢纽(hub)作为存储测试用例的中心仓库,节点(nodes)则作为 Selenium 实例执行由中心枢纽分配的测试。安装 Selenium Grid 包括下载 Selenium Server 的 jar 文件,这个文件也用于运行 Selenium RC 测试。要验证中心枢纽是否运行正常,可以通过命令提示符或网页浏览器来实现。要在 Grid 上执行测试脚本,需要使用 DesiredCapabilities
和 RemoteWebDriver
对象。DesiredCapabilities
用于配置用于自动化的浏览器类型和操作系统,而 RemoteWebDriver
用于指定执行测试的节点或机器。