1、在Linux上放selenium-server-standalone-2.53.0.jar,在jar包目录下执行命令java -jar selenium-server-standalone-2.53.0.jar -role hub,启动hub,提示Nodes should register to http://192.168.8.184:4444/grid/register/,Selenium Grid hub is up and running
浏览器打开http://192.168.8.184:4444/grid/console,页面打开成功
2、注册node节点
1)写Honor8_DevicesNode.json文件:
{
"capabilities": [
{
"deviceName": "GSL0217302005195",//设备UID
"version": "8.0.0",//设备版本号
"maxInstances": 3,
"platform": "ANDROID",//Android设备
"browserName": "chrome"
}
],
"configuration":
{
"cleanUpCycle":"2000",
"timeout":"30000",
"proxy":"org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url":"http://192.168.27.209:4723/wd/hub",////appiumserver地址,即node地址
"host":"192.168.27.209",
"port":"4723",
"maxSession":"1",
"register":true,
"registerCycle":"5000",
"hubPort":"4444",//grid hub的端口号
"hubHost":"192.168.8.184"// grid hub的IP
}
}
2)在Windows服务器上放selenium-server-standalone-2.53.0.jar,进入jar包目录,通过cmd命令注册node节点,并启动appium server:appium -a 192.168.27.209 -p 4723 -bp 4724 --session-override --nodeconfig D:\Honor8_DevicesNode.json,Linux hub 日志提示:Registered a node http://192.168.27.209:4723,node注册成功
浏览器打开grid,提示注册成功
3、开始执行测试脚本,
附:方案历程
1)原先在Windows下执行用的脚本是用adb命令安装的,
在Windows下执行命令是:cmd.exe /c adb install -r D:\workspace\NVR-Rental-APP-Test\apps\rent_test_v1.5.0.apk
但是,在Linux下执行时,如下图,会自动获取工程所在的目录,也就是Linux的目录,导致安装失败(相当于Linux的安装包,通过Windows node 要在手机上装APP,肯定不行)
2)想到了远程安装,在Jenkins里写cmd批处理命令:
java wmic /node:192.168.27.209 /user:Administrator /ptassword:zj12345 process call create "cmd.exe /c adb install -r D:\apps\rent_test_v1.5.0.apk"
通过Jenkins远程安装成功,但是build 成功后,Jenkins切换不回Linux,还是用cmd命令,还是行不通
3)还是用DesiredCapabilities capabilities安装APP
先看这样写的效果,也是获取的Linux的工程目录,所以也安装不了
4)改下脚本,把APP的路径改成Windows系统
fan
最终,把APP 放到Windows下,可以成功安装APP
在调试过程中,尝试通过Jenkins自动构建执行远程命令,把Windows node注册到Linux hub上,但是尝试失败了;也想通过Jenkins的node插件,自动注册Windows node节点,后来查了下,Linux作为节点时,可以实现指定注册node,但是Windows必须是node主动注册到hub上,所以目前是手动注册Windows node 到Linux hub上