Selenium Grid 分布式 | 介绍与实战

news2024/12/25 18:19:34

一. 介绍

Selenium 包含 3 大组件,分别是:Selenium IDE、Selenium WebDriver、Selenium Grid

其中,Selenium IDE 负责录制、回放脚本,模拟用户对页面的真实操作

Selenium WebDriver 提供 API 来操作浏览器,比如:Chrome、FireFox、IE 等

Selenium Grid 用于分布式自动化测试,通过控制多台机器、多个浏览器并行执行测试用例,在测试用例比较多的情况下比较实用。

 

二.安装

要使用 Selenium Grid 完成分布式,首先需要安装 Selenium Server 的 Jar 文件

下载地址如下:

https://www.selenium.dev/downloads/

接着,配置 JDK 运行环境

最后,通过命令行启动 Selenium Grid Server 

# 运行Selenium Grid
# 注意:确保先安装JDK环境
java -jar selenium-server-standalone-3.141.59.jar

 

三. 主节点和代理节点

Selenium Grid 分布式测试是由一个主节点( Hub )、多个代理节点( Node )组成

其中,Hub 用来管理 Node 代理节点的注册、状态信息,接受客户端代码的调用,将命令分发给 Node 来执行

通过 -role 参数,指定 hub 或 node,来启动主节点和代理节点,默认 Hub 的端口号是 4444,node 的端口号是 5555

需要注意的是,如果在一台 PC 上启动多个 Node,需要利用 -port 参数显式指定不同的端口号

# 启动一个主节点Hub
# 参数:-role hub
java -jar selenium-server-standalone-3.141.59.jar -role hub

# 启动多个代理节点
# 注意:如果在同一台机器上,需要利用 -port 定义不同的端口号
java -jar selenium-server-standalone-3.141.59.jar -role node -port 5555
java -jar selenium-server-standalone-3.141.59.jar -role node -port 6666
java -jar selenium-server-standalone-3.141.59.jar -role node -port 7777

最后,在浏览器中输入下面的地址,即可以进行控制台

http://127.0.0.1:4444/grid/console

界面和命令行可以看到 3 个 Node 已经注册到 Hub 成功

需要注意的是,如果 Node 代理节点不在本地,需要在对应 PC 上配置 JDK 环境,运行 Selenium Server 及浏览器驱动。

比如:本地 Hub 主节点的 IP 地址为 192.168.1.101,Node 代理节点的 IP 地址为 192.168.1.102

那么 Node 启动必须使用 -hub 参数显式指定 Hub 进行注册:

# 启动一个主节点Hub
# IP地址:192.168.1.101
java -jar selenium-server-standalone-3.141.59.jar -role hub

# 启动远程Node代理节点并进行注册
# IP地址:192.168.1.102
java -jar selenium-server-standalone-3.141.59.jar -role node -port 5555 -hub http://192.168.1.101:4444/grid/register/

 

四. 实战

实际项目中,使用 Selnium Grid 完成分布式的操作步骤如下:

第 1 步,在本机启动一个 Hub 主节点,可以显式指定端口号,或者保持默认的:4444

# 启动一个hub
java -jar selenium-server-standalone-3.141.59.jar -role hub

第 2 步,在本地或远程启动多个 Node 代理节点

需要注意的是,同一 IP 地址,端口号不能相同

# 启动一个代理节点Node
# 注意:同一IP地址,端口号不能相同
java -jar selenium-server-standalone-3.141.59.jar -role node -port 5555 -hub  http://192.168.1.101:4444/grid/register/

第 3 步,编写测试用例,以打开 Google 为例

利用 Selenium WebDriver 的 Remote() 方法,通过 desired_capabilities 参数指定浏览器驱动

from time import sleep

from selenium.webdriver import Remote,DesiredCapabilities

# 指定Hub主机及浏览器驱动
driver = Remote(
    command_executor='http://192.168.183.1:4444/wd/hub',
    desired_capabilities=desired_capabilities=DesiredCapabilities.CHROME.copy())

driver.get('http://google.com')

sleep(10)

driver.quit()

第 4 步,运行测试脚本

运行上面的测试脚本,Hub 主节点会自动分配到满足条件的 Node 节点去运行

想得到更多面试资源请继续往下↓

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

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

相关文章

vue面试考察知识点全梳理

一、简介 vue几个核心思想: 数据驱动组件化虚拟dom、diff局部最优更新 源码目录介绍 Vue.js 的源码在 src 目录下,其目录结构如下。 src ├── compiler # 编译相关 ├── core # 核心代码 ├── platforms # 不同平台…

速度百倍提升,高性能 Python 编译器 Codon 火了

众所周知,Python 是一门简单易学、具有强大功能的编程语言,在各种用户使用统计榜单中总是名列前茅。相应地,围绕 Python,研究者开发了各种便捷工具,以更好的服务于这门语言。 编译器充当着高级语言与机器之间的翻译官…

4.19 Cadence Allegro软件中应该如何按照系统模板去创建PCB封装?异形表贴焊盘应该如何创建?

笔者电子信息专业硕士毕业,获得过多次电子设计大赛、大学生智能车、数学建模国奖,现就职于南京某半导体芯片公司,从事硬件研发,电路设计研究。对于学电子的小伙伴,深知入门的不易,特开次博客交流分享经验&a…

js常用函数

一、特常用函数以及功能解释(建议掌握) 1、alert()函数:显示一个警告对话,如: alert(1111) 2、eval()函数:计算表达式的结果,如: alert(eval(11)) 3、confirm()函数:显…

3 面蚂蚁,一路过关斩将 成功拿到 offer 定级 P6,大厂面试雀食有点难

线上服务 CPU 很高该怎么做&#xff1f;有哪些措施可以找到问题 JDK 中有哪几个线程池&#xff1f;顺带把线程池讲了个遍 应尽量避免在 where 子句中使用!或<>操作符&#xff0c;否则将引擎放弃使用索引而进行全表扫描 SQL 索引的顺序&#xff0c;字段的顺序 查看 SQ…

缓存一致性解决方案

文章目录常见的缓存一致性解决方案双写模式失效模式两种模式的总结上述模式的改进常见的缓存一致性解决方案 这里的缓存一致性其实就是缓存中的数据和数据库中的数据如何保持一致. 这个问题根据具体的业务场景和需要解决起来略有差异,但是总体看以分为两类,双写模式和失效模…

C-Frost安装及Cassie计算样例

本文运行环境为&#xff1a;Matlab2021b/Mathematic 13/Ubuntu18.04 matlab安装mathematic安装 一、 C-Frost安装 1、安装ipopt 安装参考 2、执行NLP例子验证是否安装成功 官方步骤 1&#xff09;修改create_problem.m文件中的 FROST_PATH路径 2&#xff09;修改CMakeL…

写代码时记录的小技巧

本文是记录自己写代码时候遇到的一些感觉比较有用/有意思的技巧&#xff0c;怕自己忘了记录一下。如果有想要分享的思路/纠正改进的地方欢迎交流。 如何输出结果 (Verbose Trick) 有关类的输出 1. 如果想在**模型的 forward 中输出相关变量**&#xff0c;但又不希望反复输出影…

Oracle如何删除归档日志文件?

Oracle如何删除归档日志文件&#xff1f; Oracle启用归档日志的状态下&#xff0c;会在指定的归档日志目录生成大量的日志文件&#xff0c;而且这些日志文件默认是不会定期清理。长时间运行下&#xff0c;会占用大量的存储空间&#xff0c;最终可能导致Oracle没有足够的空间维持…

Linux集成环境部署tomcat+Linux

Linux环境部署 tomcat redisTomcat 安装配置Redis安装配置Tomcat 安装配置 下载tomcat安装包&#xff0c;将安装包上传至自己的linux服务器中&#xff0c;将安装包传到linxu环境中的/usr/local/tomcat下&#xff0c;使用tar -xvf 命令解压 2. 进入到bin目录下&#xff0c;给所…

Allegro如何查找和高亮PAD Stack类型操作指导

Allegro如何查找和高亮PAD Stack类型操作指导 Allegro可以在板子上查找并且高亮PAD的类型,查找的范围包括器件的pad,以及过孔的pad,具体操作如下 用Allegro的was performance L模式下,并且勾选Allegro Productivity Toolbox选项 选择Tools-padstack finder 会出现padsta…

数字图像处理 - 图像采样和量化

1、 目标 获取图像的方法有很多种&#xff0c;但最终的目标是一致的&#xff1a;从传感数据生成数字图像。大多数传感器的输出是连续的电压波形&#xff0c;其幅度和空间行为与被感测的物理现象有关。要创建数字图像&#xff0c;我们需要将连续感测数据转换为数字格式。这就需要…

扩散模型的源码学习diffusion_model

1.diffusion_model有几个主要的部分&#xff0c; &#xff08;1&#xff09;Unet&#xff0c;主干网络。 &#xff08;2&#xff09;GaussianDiffusion&#xff0c;也就是主要的训练策略。 2. 生成一个测试用的tensor来进行实验。 3.进入到高斯模型的内部&#xff0c;发现…

(六) Redis缓存读写策略

一 引言 缓存的引入后极大的提高了服务器的访问速率,但是当持久化数据发生变化时,如何更新缓存成为了研发中不可规避的问题,不同的方案决定缓存的最终的一致性,本文就redis的缓存读写策略,以及其他的缓存读写策略做简要概述 二 Cache Aside Pattern&#xff08;旁路缓存模式&…

Vue学习:键盘事件

input表单占位符-显示输入先的提示文本-placeholder属性 键盘事件keydown——按下 不需要松手 keyup&#xff1a;按下松手 根据按键编码进行判断 --输出event上有一个属性-keyCode -按键编码--回车13 <!-- 准备容器 --><div idroot> <input type"text&quo…

Docker安装和使用

一&#xff1a;docker安装 链接: https://pan.baidu.com/s/1A1g7rSOMoV4__Me_zJoB3Q?pwd6bqi 提取码: 6bqi 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 --来自百度网盘超级会员v4的分享。 二&#xff1a;docker使用 1.docker和虚拟机的区别&#xff1a; …

Word文档如何设置成不可编辑的模式?

把Word文档设置成“不可编辑模式”&#xff0c;也就是“限制编辑”&#xff0c;可以防止意外更改文档内容&#xff1b;对于只想给他人读阅&#xff0c;禁止复制和更改的情况&#xff0c;也能起到一定的保护作用。 Word文档里自带设置限制保护的选项&#xff0c;在菜单中选择【…

【Uni-App】uniapp使用uview实现弹出键盘输入密码/验证码功能

目录&#xff08;一&#xff09;效果图&#xff08;二&#xff09;使用组件说明keyboard属性&#xff1a;keyboard事件&#xff1a;&#xff08;五&#xff09;js代码实现&#xff08;一&#xff09;效果图 &#xff08;二&#xff09;使用组件说明 组件使用的是uview组件&…

MATLB|多微电网及分布式能源交易

目录 一、概述 二、数学模型 三、结果可视化 四、Matlab代码实现 一、概述 在人类、工业和电动汽车的能源需求的推动下&#xff0c;全球能源需求预计将在未来几年稳步增长&#xff1b;更准确地说&#xff0c;预计到 2030 年增长将达到 40%。这种需求是由人类日益依赖能源的…

Linux配置网络,增添网络会话,Wget下载,yum仓库配置

配置网络 从RHEL7开始引入了一种新的“一致网络设备命名”的方式为网络接口命名&#xff0c;该方式可以根据固件、设备 拓扑、设备类型和位置信息分配固定的名字。网络接口的名称的前两个字符为网络类型符号。如: en——表示以太网(Ethernet)、wl表示无线局域网(wlan)、ww表示无…