web端自动化——Selenium Grid原理
Grid是用于设计帮助我们进行分布式测试的工具,其整个结构由一个hub主节点和若干node代理节点组成。hub用来管理各个代理节点的注册和状态信息,并且接收远程客户端代码的请求调用,
然后把请求的命令再转发给代理节点来执行。使用Grid远程执行测试的代码与直接调用Selenium Server是一样的,只是环境启动的方式不一样,需要同时启动一个hub和至少一个node。
两者的启动都使用selenium-server.jar可执行文件。

java -jar selenium-server-standalone-3.141.0.jar -role hub
java -jar selenium-server-standalone-3.141.0.jar -role node
上面的代码分别启动了一个主节点hub和一个子节点node,hub默认端口号为4444,想改,可以在 java -jar selenium-server-standalone-3.141.0.jar -role hub命令后面加上-port xxxx;
node默认端口号为5555。
若是同一台主机上要启动多个node,则需要注意指定端口号,可以通过下面的 方式来启动多个node点节。一台测试机上可以启动多个node,前提是要保证不使用相同的端口号即可(当然不建议这样做,尽量避免不稳定因素)
java -jar selenium-server-standalone-3.141.0.jar -role node -port 5555
java -jar selenium-server-standalone-3.141.0.jar -role node -port 5556
当你的测试用例需要验证的环境比较多时,可以并行地执行这些用例进而缩短测试总耗时。
并行的能力需要借助编程语言的多线程技术,Grid可以裉据用例中指定的平台配置信息把用例转发给符合匹配要求的测试代理。
例如,你的用例中指定了要在Linux上用Firefox版本进行测试,那么Grid会自动匹配注册信息为Linux且安装了Firefox的代理节点,如果匹配成功,则转发测试请求,如果匹配失败则拒绝请求。
注意:上面运行的启动node或hub可能会发生Error: Unable to access jarfile selenium-server-standalone-3.4.0.jar,
该错误可能发生,当在启动一个Hub或node的时候。这意思是Java不能找到Selenium服务器的jar文件。
打开命令行,要cd到selenium-server-standalone-3.141.0.jar文件所在的目录,再运行这个命令,或者为这个jar指定显式的路径。
1、启动主节点hub:

2、启动子节点:

当所有测试机上的Selenium2环境搭建成功后,就可以开始启动Selenium-Grid2环境了。
首先启动一个hub,启动hub的机器可以不是测试机,任意一台机器有Java环境的机器都可以。这个是整个Selenium-Grid的中枢节点,所有的远程测试都会由经它后再被转发出去,然后在对应的测试机上执行测试。
然后启动测试代理node,测试代理必须在测试机上启动(即之前搭建了Selenium2环境的机器上),并且其注册的地址必须是hub所在的机器的ip和端口号。
最后当hub和所有的代理节点都启动成功后,可以通过浏览器查看当前Selenium-Grid的状态,直接访问地址http://localhost:4444/grid/console 。
可以看到页面显示了可以支持测试的代理节点的数量和类型,这里显示的数量和类型和你启动代理节点时所带的配置参数有关。
【当启动代理节点时其实就是一个注册过程;启动时所带的参数会被hub记住作为注册信息,所以页面中所看到的信息就是各代理节点注册时信息的汇总。】
如下图:

拓展:
如果你是跟hub同一台机器中添加node节点可以直接在控制台(终端)输入如下命令: (自己电脑添加主节点、子节点)
java -jar selenium-server-standalone-3.141.0.jar -role hub
java -jar selenium-server-standalone-3.141.0.jar -role node
如果你想在别的机器上添加node节点则控制台(终端)输入如下命令启动次节点服务:(把自己电脑作为主节点,另一台电脑机子作为子节点)
java -jar selenium-server-standalone-3.141.0.jar -role node -hub http://ip:端口/grid/register
可以通过浏览器访问Grid的控制台:http://127.0.0.1:4444/grid/console (前提是通过cmd启动selenium server服务,否则提示服务器拒连接)
中心默认使用的端口是 4444 。这是一个 TCP/IP 端口,被用于监听客户端,即自动化测试脚本到 Selenium-Grid 中心的连接。
>java -jar selenium-server-standalone-3.141.0.jar -role hub -port 4441
注意:
Selenium Grid虽然可以分布式执行测试用例,但它并不支持并行。
“分布式”和“并行”是两个完全不同的概念,分布式只负责将一个测试用例远程调用到不同的环境下执行;而“并行”强调“同时”执行多个任务。
web端自动化——Selenium Grid原理的更多相关文章
- web端自动化——selenium Page Object设计模式
Page Object设计模式的优点如下: ① 减少代码的重复. ② 提高测试用例的可读性. ③ 提高测试用例的可维护性,特别是针对UI频繁变化的项目. 当为Web页面编写测试时,需 ...
- web端自动化——selenium测试报告生成、找到测试报告路径、实现发邮件(整合)
有这样的一个场景: 假设生成的测试报告与多人相关,每个人都去测试服务器査看就会比较麻烦,如果把这种主动的且不及时的査看变成被动且及时的査收,就方便多了. 整个程序的执行过程可以分为三个步骤: ① ...
- web端自动化——Selenium Server环境配置
Selenium Server环境配置 下面下载.配置并运行Selenium Server. ① 下载 Selenium Server. 下载地址为:https://pypi.python.or ...
- web端自动化——selenium项目集成HTML测试报告
参考内容: 虫师:<selenium2自动化测试实战——基于python语言> PS:书中的代码,只能做参考,最好还是自己码一码,不一定照搬就全是对的,实践出真知... 随着软件不断迭代功 ...
- 接口自动化、移动端、web端自动化如何做?
1.<Python+Appium移动端自动化项目实战>-带您进入APP自动化测试的世界https://yuedu.baidu.com/ebook/765b38a5690203d8ce2f0 ...
- 新手入门:史上最全Web端即时通讯技术原理详解
前言 有关IM(InstantMessaging)聊天应用(如:微信,QQ).消息推送技术(如:现今移动端APP标配的消息推送模块)等即时通讯应用场景下,大多数都是桌面应用程序或者native应用较为 ...
- Web端即时通讯技术原理详解
前言 有关IM(InstantMessaging)聊天应用(如:微信,QQ).消息推送技术(如:现今移动端APP标配的消息推送模块)等即时通讯应用场景下,大多数都是桌面应用程序或者native应用较为 ...
- 新手入门贴:史上最全Web端即时通讯技术原理详解
关于IM(InstantMessaging)即时通信类软件(如微信,QQ),大多数都是桌面应用程序或者native应用较为流行,而网上关于原生IM或桌面IM软件类的通信原理介绍也较多,此处不再赘述.而 ...
- web端自动化——python多线程
Python通过两个标准库thread和threading提供对线程的支持.thread提供了低级别的.原始的线程以及一个简单的锁.threading基于Java的线程模型设计. 锁(Lock)条件变 ...
随机推荐
- Ubuntu下彻底卸载默认安装的mysql,自己手动下载安装MYSQL
彻底卸载: sudo apt-get autoremove --purge mysql-server-5.7 sudo apt-get remove mysql-common sudo rm -rf ...
- C字符指针数组的使用
#include <stdio.h> #include <stdlib.h> int main(){ //字符数组的使用 char str[] = {'z','b','c',' ...
- csp-s模拟测试93T2口胡(蒟蒻的口胡大家显然就不用看了吧
我们先证正确性,再证复杂度 以下记$\left \langle i,j \right \rangle$为考虑$\left [ i,j \right ]$的点时的最优决策 $\left \langle ...
- CSP-S 2019 考试分析
Day 0 考试前几天心情比较浮躁,一些题目要调个两三天,还有许多模板题打不对,看来注定凉凉: 坐大巴去日照的路上还打算复习算法来着,没想到我晕车这么厉害,几乎一睁眼就晕,想安安静静的睡会,那个电视播 ...
- python 小技巧,给设计好的dict 增加嵌套值
beijing={} beijing={'} 现在要给beijing的增加一个shanghai1 的嵌套值 beijing['shanghai1']['name']=1 运行: 那么在python3. ...
- 2019-2020-1 20175313 《信息安全系统设计基础》实现mypwd
目录 MyPWD 一.题目要求 二.题目理解 三.需求分析 四.设计思路 五.伪代码分析 六.码云链接 七.运行结果截图 MyPWD 一.题目要求 学习pwd命令 研究pwd实现需要的系统调用(man ...
- Shell修改密码为原密码
密码到期后更改密码为原密码,服务器多时工作量巨大,编写脚本完成. 登陆后修改提示符为: doraemon# 方便expect匹配 修改LANG=C,提示为英文防止干扰: #!/usr/bin/expe ...
- ArcGIS Python人门到精通目录基于ArcGIS10.2,100以上案例15章42个视频806分钟,51GIS网站上线
ArcGIS Python人门到精通目录 闫老师 QQ:276529800 微信13108507190 1. ArcGIS Python基础 1.1 ArcGIS为什么学习Python 1.2 A ...
- CentOS 7.2 基于Docker实现MySQL主从架构
原文地址:https://blog.csdn.net/sunnyfg/article/details/80655823 1.安装Docker(略) Centos7下安装Docker : https:/ ...
- 关于如何重写Controller和Service技术攻关文档
版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_39784756/articl ...