01#前言#
在之前appium的系列分享中,我们对appium相关的有了一系列的分享,我们针对多设备,Appium系列(十八)多设备并行执行测试用例。针对多设备的管理,我们采用了多进程和多线程的方式来控制,当然了,可以解决这样的问题,但是有没有其他的解决方案。本文带领你看下基于Selenium Grid来管理设备。
02#正文#
一、 什么是Selenium Grid?
Selenium Grid是Selenium套件的一部分,它专门用于并行运行多个测试用例在不同的浏览器、操作系统和机器上。
Selenium Grid有两个版本——老版本Grid 1和新版本Grid 2。我们只对新版本做介绍,因为Selenium团队已经逐渐遗弃老版本了。
Selenium Grid 主要使用 master-slaves (or hub-nodes) 理念 --一个 master/hub 和多个 基于master/hub注册的子节点 slaves/nodes。当我们在master上基于不同的浏览器/系统运行测试用例时,master将会分发给适当的node运行。
搭建后,它整体的结构如下:
二、 Grid模式下有两个非常重要的组件:
1.hub 跟交换机的角色类似,通过网线连通到各种设备。官方的解释是:hub用来管理各个节点的注册和状态信息,并且接受远程客户端代码的请求调用,然后把请求的命令再转发给节点来执行。
2.node 节点,执行脚本代码,通过上图可以看到,hub将请求发给node去执行,这里的node就是Appium Server端 。
三、我们去看下如何部署使用?
搭建appium环境可以参考:一文带你趟过mac搭建appium测试环境的遇到的坑
我们下载Selenium Grid服务,下载地址
代码语言:javascript复制https://npm.taobao.org/mirrors/selenium/3.9/
我下载的是3.9的版本的。
下载后,我们去查看
代码语言:javascript复制java -jar selenium-server-standalone-3.9.1.jar --help
结果
我们可以看到后面可以跟的命令,以及含义。
启动下
代码语言:javascript复制java -jar selenium-server-standalone-3.9.1.jar -role hub -log log.txt
启动后访问
http://0.0.0.0:4444/
我们可以在console查看链接的设备
我们去配置下单个设备的节点,设备如下
代码语言:javascript复制{
"capabilities":
[
{
"deviceName": "192.168.56.109:5555", #此为adb devices检测到的设备名
"version":"10.0", #模拟器/真机的系统版本
"maxInstances": 1, #最多的实例个数
"platform":"ANDROID", #测试平台:Android
"browserName": "" #测试普通App可置为空,如果是测试浏览器如chrome就可以写上
}
],
"configuration":
{
"cleanUpCycle":2000,
"timeout":30000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"hub":"0.0.0.0:4444/grid/register", #hub的注册接口地址
"url":"http://0.0.0.0:4723/wd/hub", #Appium Server的默认访问路径
"host": "127.0.0.1", #Appium Server的IP地址
"port": 4723, #Appium Server端口号
"maxSession": 1,
"register": true,
"registerCycle": 5000,
"hubPort": 4444, #hub端口号
"hubHost": "127.0.0.1", #hub IP地址,这里是在本机上启动的,如果是在另外的机器上需要用其外部的IP地址,比如:192.168.1.111这种
"hubProtocol": "http" #协议,默认为http
}
}
配置完毕后可以启动,方式如下
代码语言:javascript复制appium -p 4723 --nodeconfig testone.json
也可以用
node . --nodeconfig /path/to/nodeconfig.json,这个需要指定main.js 即appium的
启动后,我们可以访问
代码语言:javascript复制http://localhost:4444/grid/console
然后对应的连接的设备的配置。
我们看下appium的对应的服务启动
每隔一段时间,就会和grid进行。那么别的设备连接方式上述。配置完毕后,可以在http://0.0.0.0:4444/grid/console#查看。
到这里,就搭建完毕了,后续我们看下代码如何使用?