分布式系统Selenium GRID的原理及应用

网络 通信技术
今天向大家介绍一下基于selenium的分布式测试,Selenium-Grid。

作者 | 汪欢,单位:中国移动智慧家庭运营中心

​Labs 导读

分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。如上,是分布式系统的概念,在测试系统,也有分布式的应用场景,今天向大家介绍一下基于selenium的分布式测试,Selenium-Grid。

Part 01 什么是Selenium-Grid 

Selenium Grid是Selenium的三大组件之一,它的作用就是允许我们在多台计算机上并行运行测试, 并集中管理不同的浏览器版本和浏览器配置。

Part 02 Selenium-Grid的使用场景 

- 支持在多执行环境进行测试

Selenium Grid支持在多个物理机或者虚拟机(跨平台、跨浏览器)上执行,比如测试节点1为物理机,操作系统为Windows7,浏览器为Google Chrome,测试节点2为物理机,操作系统为Linux,浏览器为Firefox,测试节点3为基于Dockers的虚拟化环境,浏览器为IE8。Selenium-Grid对这三个节点均可以调用。

- 结合多线程技术,在多台设备并行进行测试,可以有效地减少测试时间

Selenium Grid本身并不支持多线程并发执行,但是可以结合多线程技术,实现测试并发执行。

Part 03 Selenium-Grid的结构 

Grid由一个中心(hub)和一到多个节点(Node)组成。

其中,hub节点作为管理节点,用来管理各个代理节点的注册和状态信息,并且接收远程客户端代码请求调用,然后把请求的命令再转发给代理代点来执行。

Node节点就是实际执行任务的节点,即浏览器所在的节点,它的主要作用就是注册到hub节点,并接收hub节点的请求及执行测试。

图片

Part 04 环境搭建 

预置配置

Hub和Node节点PC需要部署java环境,且Hub节点与Node节点处于同一个局域网中,且网络互通,并将selenium grid的jar包下载到PC,下载地址:https://cdn.npm.taobao.org/dist/selenium/3.9/selenium-server-standalone-3.9.1.jar,

配置Hub节点

以Windows系统为例,进入jar包所在目录,输入以下命令:

java -jar selenium-server-standalone-3.9.1.jar -role hub -port 4455

  • role:表示此节点为hub节点
  • port:表示Hub通过此接口与Node节点进行交互

图片

此时,我们在192.168.1.3这台PC上创建了Hub节点,我们登陆一下hub节点,查看一下当前Selenium Grid整体的一个状态,打开http://192.168.1.3:4455/这个页面,可以看到右下角有个Console链接。

图片

点击console,可以自动跳转到selenium Grid的控制页面,显示如下:

图片

因其他Node节点还未配置,故只能查看当前配置项。

配置Node节点

配置节点一:

同样的,我们以Windows系统为例,进入jar包所在目录,输入以下命令:

java -jar selenium-server-standalone-3.9.1.jar -role node -hub http://192.168.1.3:4455/grid/register

图片

命令输入完成后,可以看到,当前设备已注册成功,我们再返回到Hub节点,刷新http://192.168.1.3:4455/grid/console页面,查看Node节点是否注册成功。

图片

此时,我们可以看到一个IP为192.168.147.1的设备已成功注册到Hub节点,且这个设备上有三种浏览器,分别为firefox、IE、Chrome。

配置节点二:

同样的,第二台PC,进入jar包所在目录,输入以下命令:

java -jar selenium-server-standalone-3.9.1.jar -role node -hub http://192.168.1.3:4455/grid/register

图片

Node节点二,显示已注册成功,此时我们登陆Hub,查看注册情况:

图片

我们在Hub节点可以看到两个Node节点。

Part 05 验证效果

现在我们通过Python来验证以下selenium grid的神奇之处,我们在Hub节点编写一个自动化脚本,通过在Hub节点来下发任务,由Node节点来实现具体测试。测试的内容为让Node1节点通过Firefox浏览器打开百度网站。

Hub节点上相应的Python脚本及执行结果如下:

图片

Node1节点上命令行的显示执行的任务如下:

图片

就此,整个完整的小测试已完成,你是不是想自己尝试操作一遍?​

责任编辑:未丽燕 来源: 移动Labs
相关推荐

2014-07-10 09:28:57

光纤

2018-07-16 08:39:18

分布式系统集群

2018-12-14 10:06:22

缓存分布式系统

2023-09-14 15:44:46

分布式事务数据存储

2020-01-17 09:07:14

分布式系统网络

2023-05-12 08:23:03

分布式系统网络

2015-05-26 11:18:06

分布式系统可扩展性

2024-01-08 08:05:08

分开部署数据体系系统拆分

2022-05-11 22:10:05

分布式云云计算公共云

2023-02-11 00:04:17

分布式系统安全

2019-10-16 10:34:33

数据库大数据脚本语言

2023-05-29 14:07:00

Zuul网关系统

2024-01-09 08:00:58

2012-10-09 16:43:47

FastDFS分布式文件系统

2017-08-30 16:47:49

Kafka设计原理

2010-05-12 17:03:30

Oracle复制技术

2017-10-27 08:40:44

分布式存储剪枝系统

2021-02-28 07:49:28

Zookeeper分布式

2022-06-21 08:27:22

Seata分布式事务
点赞
收藏

51CTO技术栈公众号