Selenium Grid- 让自动化分布式执行变得可能

news2024/11/26 2:53:01

什么是 Selenium Grid?

Selenium Grid 是 Selenium 的三大组件之一,允许用户同时在不同的机器和系统上测试不同浏览器。
也就是说 Selenium Grid 支持分布式的测试执行。它可以让你的测试用例在一个分布式的执行环境中运行。

由上图可见,测试脚本会通过 selenium hub 节点分发给不同的 node 节点,而不同的 node 节点所在的操作系统和搭载的浏览器类型可以是不同的,接下来我们看下 hub 节点和 node 节点具体分别有什么作用:

hub 节点
中心节点,或总控节点
管理各个 node 节点的注册信息和状态信息
接收并转发客户端(测试脚本)请求到合适的 node 节点
node 节点
子节点,或代理节点
负责注册配置信息到 hub 节点(平台、浏览器、浏览器版本等)
负责接收来自 hub 节点的转发的请求以执行测试脚本
也可单独作为远程节点执行测试脚本
环境准备

环境说明:
本地端系统为 win10,搭载 V68 版本的 Chrome 浏览器,IP 地址为 192.168.1.222
远程端系统为 win7,搭载 V56 版本的 Firefox 浏览器,IP 地址为 192.168.140.130
两台主机能够相互 ping 通
hub 节点和 node1 节点都是在本地端工作,node2 节点在远程端工作
环境准备步骤:
测试机器安装 JDK,配置环境变量
下载 selenium-server-standalone-x.x.x.jar
https://npm.taobao.org/mirrors/selenium
下载浏览器驱动
Chrome:https://npm.taobao.org/mirrors/chromedriver
Firefox:https://npm.taobao.org/mirrors/geckodriver/
IE:https://npm.taobao.org/mirrors/selenium 注:IE 驱动和 selenium 依赖在一起
配置运行
1、本地端启动 hub
java -jar selenium-server-standalone-3.141.59.jar -role hub -port 8888 -maxSession 10
参数解释:

Java -jar selenium-server-standalone-3.141.59.jar 运行 jar 包
-role hub 以 hub 的角色运行
-port 8888 指定 hub 运行的端口(默认为 4444)
-maxSession 10 最大的处理会话
2、查看 hub 的运行状态
浏览器中输入 http://localhost:8888/grid/console 进入到到 hub 的 console 控制台

3、启动 node1

node1 节点工作在本地端,配置的浏览器为 V68 的 Chrome

java -Dwebdriver.chrome.driver="chromedriver.exe" -jar selenium-server-standalone-3.141.59.jar -role node -hub "http://192.168.4.4:8888/grid/register" -port 5558 -browser "browserName=chrome,maxInstances=2,version=68,platform=WINDOWS"

参数解释:

-Dwebdriver.chrome.driver="chromedriver.exe" 指定 chromeDriver 驱动所在的路径(本地)
-jar selenium-server-standalone-3.141.59.jar 运行 jar 包
-role node 以 node 角色执行
-hub "http://192.168.1.222:8888/grid/register" 指定要链接的 hub 地址,这样 node 才能和 hub 通讯连接上
-port 5558 node 的执行端口
-browser "browserName=chrome,maxInstances=2,version=68,platform=WINDOWS"
browserName=chrome 运行的浏览器名称
maxInstances=2 最多支持两个浏览器实例
version=68 浏览器版本号
platform=WINDOWS 平台名称
运行之后的效果:

浏览器再次刷新访问 hub 的 console 端

4、启动远程端的 node2 节点

node2 节点工作在远程端,配置的浏览器为 V56 的 Chrome

启动配置为

java  -Dwebdriver.firefox.driver="geckodriver.exe" -jar selenium-server-standalone-3.141.59.jar -role node -hub "http://192.168.140.1:8888/grid/register" -port 5558  -browser "browserName=firefox,maxInstances=2,version=56,platform=WINDOWS"

浏览器再次刷新访问 hub 的 console 端,可以看到两个 node 节点已经成功注册到 hub 节点上

 执行脚本

// 期望能力对象
DesiredCapabilities capabilities = new DesiredCapabilities();
//配置测试的浏览器,配置Chrome则会启动本地node1节点浏览器进行测试,配置Firefox则会启动远程端的Firefox进行测试
capabilities.setBrowserName(BrowserType.CHROME);
// hub节点
String url = "http://192.168.1.222:8888/wd/hub";
//和hub建立通讯,把相应配置传给hub,hub会根据配置选择注册的node节点,打开相应的浏览器进行测试
WebDriver driver = new RemoteWebDriver(new URL(url), capabilities);
driver.get("http://www.baidu.com");
driver.findElement(By.id("kw")).sendKeys("柠檬班软件测试");
Thread.sleep(10000);
driver.quit();

通过上述配置及脚本我们能够启动本地 node1 节点和 node2 节点分别进行测试,单 node 节点只能支持一款浏览器进行测试,如何让 node 节点可以支持多款浏览器呢?

答案就是在配置 node 节点的时候传入的参数配置兼容多款浏览器即可。

node 节点配置兼容不同浏览器
node 节点可以配置单一浏览器,如 Chrome、Firefox、IE 等等,也可以配置兼容多款浏览器

这样只要符合 node 节点配置中的任何一个,hub 会将客户端的执行请求发送过来

java -Dwebdriver.ie.driver="IEDriverServer.exe" -Dwebdriver.chrome.driver="chromedriver.exe" -Dwebdriver.firefox.driver="geckodriver.exe" -jar selenium-server-standalone-3.141.59.jar -role node -hub "http://192.168.140.1:8888/grid/register" -port 5555  -browser "browserName=internet explorer,maxInstances=4,version=11,platform=WINDOWS" -browser "browserName=chrome,maxInstances=2,version=68,platform=WINDOWS" -browser "browserName=firefox,maxInstances=3,version=56,platform=WINDOWS"

现在 node1 节点和 node2 节点采用相同的启动参数配置启动

我们可以看到,grid 的 console 控制台显示两个 node 节点都可以支持多浏览器测试

node 节点启动方式二

之前启动的方式是通过命令行或者 bat 脚本启动 node 节点,官方提供了两种方式,其二就是通过 JSON 配置文件启动

java -jar selenium-server-standalone-3.141.59.jar -role node -nodeConfig node.json

node.json 配置文件如下:

{
  "capabilities":
	  [
		{
          "browserName": "firefox",
          "maxInstances": 5,
          "seleniumProtocol": "WebDriver",
		  "webdriver.firefox.driver":"firefox.exe",
          #"firefox_binary":"D:\\Program Files\\Mozilla Firefox\\firefox.exe",
          "platform":"WINDOWS"
        },
        {
          "browserName": "chrome",
          "maxInstances": 5,
          "seleniumProtocol": "WebDriver",
          "webdriver.chrome.driver":"chromedriver.exe",
          "platform":"WINDOWS"
        },
        {
          "browserName": "internet explorer",
          "maxInstances": 5,
          "seleniumProtocol": "WebDriver",
          "platform":"WINDOWS"
        }
	  ],
	  "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
	  "maxSession": 5,
	  "port": -1,
	  "register": true,
	  "registerCycle": 5000,
	  "hub": "http://192.168.1.222:8888",
	  "nodeStatusCheckTimeout": 5000,
	  "nodePolling": 5000,
	  "role": "node",
	  "unregisterIfStillDownAfter": 60000,
	  "downPollingLimit": 2,
	  "debug": false,
	  "servlets" : [],
	  "withoutServlets": [],
	  "custom": {}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/574235.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python之并发编程二多进程理论

一、什么是进程 进程:正在进行的一个过程或者说一个任务。而负责执行任务则是cpu。 二、进程与程序的区别 程序仅仅只是一堆代码而已,而进程指的是程序的运行过程。 三、并发与并行 无论是并行还是并发,在用户看来都是’同时’运行的&am…

从实际案例聊聊Java应用的GC优化

概 述 当Java程序的性能无法达到预期目标时,开发人员通常需要借助GC优化来进一步提高性能。然而,GC算法复杂,影响GC性能的参数众多,且参数调整又依赖于应用各自的特点,这些因素大大增加了GC优化的难度。不过&#xf…

GitLab 目录遍历漏洞复现(CVE-2023-2825)

0x01 产品简介 Gitlab是目前被广泛使用的基于git的开源代码管理平台, 基于Ruby on Rails构建, 主要针对软件开发过程中产生的代码和文档进行管理,同时可以搭建Web服务。 0x02 漏洞概述 GitLab 存在目录遍历漏洞,当嵌套在至少五个组中的公共项目中存在附…

demlia机器人建模与装配

1 可以用catia中的模型或其他三维建模软件中的模型转化为step格式即可 2 在demlia中打开 3 打开单个零件保存为cgr格式 对机械臂所有零件都做同样的转化 4 新建装配设计,并导入带有坐标的零件 将转化后的零件都选中导入即是装配好的 5 将模式修改为device buildin…

mysql超全语法大全

mysql安装教程 一、登录(使用可视化工具,可忽略) 打开命令行工具,输入以下命令,根据提示输入 root 用户的密码。 mysql -u root -p mysql -u root -p -D 数据库名二、创建数据库 显示数据库:SHOW DATAB…

Shell脚本攻略:条件语句if、case

目录 一、理论 1.条件测试 2.if语句 3.case语句 二、实验 1.实验一 2.实验二 3.实验三 4.实验四 5.实验五 6.实验六 7.实验七 一、理论 1.条件测试 (1)三种测试方法 ① test命令测试 ② [ ]测试(注意前后需要有空格&…

Java多线程编程

Java多线程编程 前言 Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。这里定义…

新快报:十年聚焦,巨杉数据库打造中国基础软件的“原创力”

广东省级主流媒体新快报策划“非凡十年,广州答卷”专题,关注十年来广州的“原创力量”,作为土生土长的广州基础软件创新企业,巨杉数据库十年聚焦,从零打造原生分布式数据库,获得逾百家金融银行客户认可&…

STM32——SDIO的学习(驱动SD卡)(实战篇)

目录 一、SDIO寄存器 1.1 SDIO电源控制寄存器(SDIO_POWER) 1.2 SDIO时钟控制寄存器(SDIO_CLKCR) 1.3 SDIO参数寄存器(SDIO_ARG) 1.4 SDIO命令寄存器(SDIO_CMD) 1.5 SDIO命令响应寄存器(SDIO_RESPCMD) 1.6 SDIO响应 1..4 寄存器(SDIO_RESPx) 1.7 SDIO数据定时器寄存器(S…

C语言程序设计题/C语言计算机二级考前押题版

C语言程序设计题/C语言计算机二级考试押题版 与 数位 和 数 有关 求max与min 任意四个数 运算符和表达式版本 #include <stdio.h> int main( ) {int a,b,c,d;int max,min;printf("please input 4 integers:");scanf("%d%d%d%d", &a, &b, …

ESP32通过 WiFi 传输视频

概述 这是ESP32 WiFi视频流的入门教程。ESP32-CAM 是一款带有ESP32-S 芯片的小型摄像头模块,除了OV2640 相机和多个用于连接外围设备的 GPIO 外,它还具有一个microSD 卡插槽,可用于存储相机拍摄的图像。 ESP32-CAM 简介 ESP32-CAM 是一款采用ESP32-S 芯片的超小型相机模组…

HP EliteBook 840 G6电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件配置 硬件型号驱动情况 主板HP Elitebook 840 G6 处理器Intel(R) Core(TM) i7-8565U CPU 1.80GHz (max 4.60Ghz) Kaby Lake R已驱动 内存SK Hynix 32 GB (2x16) 2…

QT 设计ROS GUI界面订阅和发布话题

QT 设计ROS GUI界面订阅和发布话题 主要参考下面的博客 ROS项目开发实战&#xff08;三&#xff09;——使用QT进行ROS的GUI界面设计&#xff08;详细教程附代码&#xff01;&#xff01;&#xff01;&#xff09; Qt ROS 相关配置请看上一篇博客 首先建立工作空间和功能包&a…

深度学习训练营之船类识别

深度学习训练营之船类识别 原文链接环境介绍前言收获前置工作设置GPU导入图片数据预处理 数据可视化配置数据集数据显示 构建模型模型训练编译训练模型 结果可视化(模型评估)损失值可视化混淆矩阵各项指标评估 原文链接 &#x1f368; 本文为&#x1f517;365天深度学习训练营 …

腾讯云轻量应用服务器的端口怎么开通?

腾讯云轻量应用服务器怎么使用&#xff1f;端口在哪开启&#xff1f;在防火墙中可以开启端口号。 腾讯云轻量应用服务器端口怎么开通&#xff1f;在轻量服务器管理控制台的防火墙中开启端口&#xff0c;如果是CVM云服务器在安全组中开通&#xff0c;阿腾云以轻量应用服务器开通…

Python+Socket实现多人聊天室,功能:好友聊天、群聊、图片、表情、文件等

一、项目简介 本项目主要基于python实现的多人聊天室&#xff0c;主要的功能如下&#xff1a; 登录注册添加好友与好友进行私聊创建群聊邀请/申请加入群聊聊天发送图片聊天发送表情聊天发送文件聊天记录保存在本地中聊天过程中发送的文件保存本地 二、环境介绍 python3.8my…

浅谈 RISC-V 软件开发生态之 IDE

软件开发者是芯片公司非常重要的资产&#xff0c;CPU做出来是不够的&#xff0c;要让更多的软件开发者用这颗芯片才是成功。国际大厂们都有一只较大的软件团队&#xff0c;在做面向开发者的软件工具和SDK等。--张先轶博士&#xff1a;为什么RISC-V需要共建软件生态? 前言 目前…

VsCode终端无法使用conda切换环境的问题

一.问题描述: windows的cmd可以正常使用conda切换环境 为了方便想使用vscode的终端,但是报错: PS C:\Users\admin\Desktop\MyProject> conda activate objection1.8.4 CommandNotFoundError: Your shell has not been properly configured to use conda activate. invocati…

智能排班系统 【管理系统功能、操作说明——下篇】

文章目录 页面与功能展示排班日历月视图&#xff08;按职位查询&#xff09;月视图&#xff08;按员工查询&#xff09;周视图 排班任务管理创建排班计算任务设置任务的排班规则设置工作日客流量导入任务计算查看任务结果发布任务任务多算法计算 页面与功能展示 排班日历 在排…

vcruntime140.dll丢失的解决方法?教你如何修复好dll文件

Vcruntime140.dll文件是Windows操作系统中非常重要的一个动态链接库文件&#xff0c;用于支持使用Microsoft Visual C编译器创建的应用程序的运行。当Windows系统中的vcruntime140.dll文件丢失时&#xff0c;可能会导致某些应用程序无法正常启动。在尝试启动应用程序时&#xf…