快速搭建基于Selenium Grid 分布式管理的appium测试设备系统

2021-12-15 19:09:46 浏览数 (1)

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#查看。

到这里,就搭建完毕了,后续我们看下代码如何使用?

0 人点赞