自动化测试(IDEA+Java+Selenium+testng)(selenium Grid安装配置)
Selenium Grid 简介
Selenium Grid 是一个可以方便的让你脚本运行在不同的平台以及不同的浏览器上的一个框架。
比如一个脚本要在不同的浏览器或者不同的平台运行,将代码拷贝到不同的机器上运行是不现实的,这个时候就需要一个工具将脚本分发到这些不同的机器上执行。Grid就是负责将脚本分发到不同的平台的工具或者框架
Selenium Grid 分1和2两个版本,其中Selenium Grid 2的发布还晚于Selenium 2.0,也就是说Selenium Grid 2 并不是和Selenium 2.0 一起发布的,但是Selenium Grid 2基本上支持Selenium 2.0的所有功能。
Selenium Grid 结构图
Hub模块有两个功能,第一个功能就是接收selenium脚本,然后分发到各个Node上去,Hub本身不具备跑脚本的功能。Node可以理解为一台机器,接收分发的脚本并运行起来。
何时需要selenium Grid
1.需要在不同的系统和浏览器运行测试
2.减少测试执行时间
减少测试执行时间可以理解为需要并发跑脚本,假如有100个脚本需要跑,都在一台机器资源可能被耗光,提高测试速度
如何使用
- 下载:
http://selenium-release.storage.googleapis.com/index.html
建议和selenium版本对应
2、启动Hub:
-
打开cmd,进入到grid下载位置
-
输入命令:java -jar selenium-server-standalone-2.53.0.jar -role hub
-
访问红框中的地址,点击console
-
有这个页面表示Hub启动完成
点击“view config”可以查看Hub默认配置
Hub常见参数:
1、 throwOnCapabilityNotPresent : true 默认为 true,表示当前hub只有在有node存在时,才会接受测试请求。为false 则反之;
2、 newSessionWaitTimeout : -1 默认-1,即没有超时;指定一个新的测试session等待执行的间隔时间。即一个代理节点上前后2个测试中间的延时时间,单位为毫秒;
3、prioritizer : null 这是一个实现了Prioritizer接口的类。设置grid执行test任务的优先逻辑;默认为null,那个脚本先到那个先执行;
4、browserTimeout : 0 浏览器无响应的超时时间,默认为0表示没有超时时间
3、修改Hub配置
假设Hub端口号已被占用
- cmd中直接通过命令修改:
java -jar selenium-server-standalone-2.53.0.jar -role hub -port 4445 - 通过Json文件修改(修改多个Hub配置):
1、本地新建一个json文件
2、保存后cmd中重新启动Hub
java -jar selenium-server-standalone-2.53.0.jar -role hub -hubConfig hub.json
node 节点环境要求
- node 节点必须要有 java 环境
- node 节点跟hub 节点机器间可以互相 ping 通。
- node 节点负责执行Selenium 脚本,所以必须有Selenium 环境(脚本语言对应的环境如java, 各个浏览器及其对应的driver)
1、注册node节点
- 启动node并注册到hub:
- java -jar selenium-server-standalone-2.53.0.jar -role node -hub +Hub地址
- node已注册进来
node节点默认端口号5555,再注册一个节点需要修改端口号
2、修改node节点配置
- cmd中通过命令修改:
- 通过json修改:
通过json文件配置可以方便的修改node节点支持的浏览器个数和种类
启动 json
java -jar selenium-server standalone-2.53.1. jar -role node nodeConfig node. json -hub http://192.168.1.105 :4444/