Appium支持一台电脑上并行运行多台测试设备,通过启动grid hub服务,注册多个节点设备,然后配置相应的testng.xml文件,达到并行运行测试的目的。
目前有两种方式启动多个Appium Server
- 一种是npm安装Appium,用命令行来启动Appium Server;
- 一种是直接安装的客户端,在Appium客户端直接设置和添加json文件,手动来启动。
命令行的方式更快捷,不需要每次打开Appium客户端设置,本文先介绍用Appium 客户端直接启动服务。
步骤:
1,启动Selenium Grid服务:进入selenium-server-standalone-2.48.2.jar目录,运行命令:java -jar selenium-server-standalone-2.48.2.jar -role hub
或者把上面命令写成如下批处理文件,保存在grid目录下,运行时直接双击.bat文件即可。
<span style="font-size:18px;">@echo off
echo 正在启动appium grid服务,请稍等。
echo 启动完毕之后,请不要关闭此窗口。
echo 当你看到“Selenium Grid hub is up and running”则表示启动成功。
java -jar selenium-server-standalone-2.48.2.jar -role hub</span>
2,启动各节点Appium Server:
node命令启动时主要参数如下:
- -p Appium主端口
- -U 设备ID
- -bp Appium bootstrap端口
- --chromedriver-port chomedriver 端口(如果使用Webviews或者chrome)
- --selendriod-port selendriod port)(如果使用selendriod)
node . -p 4492 -bp 2251 -U 设备1的ID
node . -p 4491 -bp 2250 -U 设备2的ID
例如:
appium --address 127.0.0.1 --port 4723 --bootstrap-port 4724 --session-override --nodeconfig nodeconfig1.json(在grid目录下运行)
其中nodeconfig1.json 是节点配置文件,代码如下:
<span style="font-size:18px;">{
"capabilities": [
{
"browserName": "HUAWEI GRA-UL 10",
"version": "5.0.1",
"maxInstances": 1,
"platform": "WINDOWS"
}
],
"configuration": {
"cleanUpCycle": 2000,
"timeout":30000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url":"http://127.0.0.1:4723/wd/hub",
"host": "127.0.0.1",
"port": 4723,
"maxSession": 1,
"register": true,
"registerCycle": 5000,
"hubPort": 4444,
"hubHost": "127.0.0.1"
}
}
</span>
<span style="font-size:18px;">
</span>
Appium Server端口号和节点配置文件如图一红圈所示位置配置,其他端口配置如图二所示,配置完成点击启动按钮:
图二:
启动成功:
同样地启动第二个节点服务:
testng.xml中关于设备的配置信息:
<test name="主页-设备1">
<parameter name="udid" value="A7J5T16120004478" />
<parameter name="deviceName" value="HUAWEI GRA-UL 10" />
<parameter name="platformVersion" value="5.0.1" />
<classes>
<class name="com.appiumzhihu.testcases.home.HomePage_001_SearchWord_Test" />
</classes>
</test>
<test name="登录-设备2">
<parameter name="udid" value="852bf20a" />
<parameter name="deviceName" value="Lenovo K32c36" />
<parameter name="platformVersion" value="5.1.1" />
<classes>
<class name="com.appiumzhihu.testcases.login.LoginPage_001_LoginSubmit_Test" />
</classes>
</test></span>
运行过程如图:
添加更多设备就再启动一个Appium Server,添加nodeconfig3.json文件,配置文件添加相应的参数。
可以通过打开console检查node节点是否注册成功:
存在的问题:因为三台设备运行的用例都依赖于登录这个@test,登录的账号又是同一个,所以数据不能公用,因此只有一台设备能运行通过,继续研究如何解决数据的问题。