无法将多个appium节点连接到selenium网格

时间:2016-02-25 10:35:26

标签: node.js selenium command-line automation appium

我想在多台设备上并行运行appium脚本,但第二个节点始终无法连接到selenium服务器。

这是我的selenium服务器日志,它启动并完美注册

D:\Appium>java -jar selenium-server-standalone-2.52.0.jar -port 4444 -role hub m
axInstances=2 maxSession=2 -timeout 30000
15:17:45.215 INFO - Launching Selenium Grid hub
2016-02-25 15:17:45.810:INFO::main: Logging initialized @732ms
15:17:45.818 INFO - Will listen on 4444
15:17:45.856 INFO - Will listen on 4444
2016-02-25 15:17:45.859:INFO:osjs.Server:main: jetty-9.2.z-SNAPSHOT
2016-02-25 15:17:45.879:INFO:osjsh.ContextHandler:main: Started o.s.j.s.ServletC
ontextHandler@b0ed20{/,null,AVAILABLE}
2016-02-25 15:17:45.893:INFO:osjs.ServerConnector:main: Started ServerConnector@
76c8cd{HTTP/1.1}{0.0.0.0:4444}
2016-02-25 15:17:45.894:INFO:osjs.Server:main: Started @816ms
15:17:45.894 INFO - Nodes should register to http://10.51.25.88:4444/grid/regist
er/
15:17:45.894 INFO - Selenium Grid hub is up and running
15:18:13.259 INFO - Registered a node http://10.51.25.88:4724
15:18:25.289 INFO - Marking the node http://10.51.25.88:4724 as down: cannot rea
ch the node for 2 tries

这是我创建节点和设置功能的Json文件

{"capabilities":[{"deviceName":"0009aec74c7a5f","browserName":"chrome","maxInstances":1,"version":"4.1.2","platform":"ANDROID"}],"configuration":{"proxy":"org.openqa.grid.selenium.proxy.DefaultRemoteProxy","cleanUpCycle":2000,"port":4724,"host":"10.51.25.88","maxSession":1,"hubHost":"10.51.25.88","registerCycle":5000,"hubPort":4444,"timeout":30000,"url":"http:\/\/10.51.25.88:4724\/wd\/hub","register":true}}

因此,当我尝试连接我的第二个appium节点时,它以类似的方式无法在没有任何命令提示错误日志的appium网格中注册

我有两个通过USB连接的物理设备和通过adb检测到的设备。我使用的是最新版本的Appium 1.4和最新的selenium独立服务器jar文件2.52。

我可以将我的appium节点注册到selenium服务器以获取设备的每个第一个节点,但是当我尝试连接我的第二个appium节点时,它无法连接关闭命令promt而不提供任何错误日志。

这个命令和配置用于以前版本的Appium(大约一年前),但是对于新的Appium版本,第二个节点没有注册。

是否有任何替代方法可以将appium节点注册到selenium网格,或者上面是否有我遗漏的内容?

1 个答案:

答案 0 :(得分:0)

我已经构建了为每个Appium节点生成.json和.bat文件的库。它测试得很好,工作得很酷。所以我相信你缺少启动捆绑端口号来连接另一个Appium实例。

Json文件:

{
"capabilities":
[
{
"DeviceManufacturer":"LGE",
"DeviceModel":"Nexus 5",
"DeviceOS":"Android",
"OSVersion":"6.0.1",
"DeviceType":"Real",
"deviceName":"038d1797094778a8",
"browserName":"Real_LGE_Nexus 5_Android_6.0.1",
"platform":"Android"
}],
"configuration":
{
"nodeTimeout":120,
"port":4723,
"hubPort":4444,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url":"http://192.168.1.246:4723/wd/hub",
"hub": "192.168.1.246:4444/grid/register",
"hubHost":"192.168.1.246",
"nodePolling":2000,
"registerCycle":10000,
"register":true,
"cleanUpCycle":2000,
"timeout":30000,
"maxSession":5
}
}

您必须观察我正在使用多种功能,但我通过覆盖org.openqa.grid.internal.utils.DefaultCapabilityMatcher类的匹配方法来使用所有这些功能。所以当我调用org.openqa.grid.selenium.GridLauncher类的main方法时。我将我的重写jar保留在同一个类路径中,并且它可以自定义匹配节点。

.bat文件:

请注意.bat文件 - > - bootstrap 6024

node.exe "C:\Program Files (x86)\Appium\node_modules\appium\bin\appium.js" --address 192.168.1.132 --port 4830 --bootstrap 4830 -U 038d1797094778a8 --nodeconfig D:\MobileBaseProjectRepository\Grid\Node\nodeConfig_192.168.1.132_2.json --session-override

所以,回到你的问题,使用 - bootstrap 6024 ,同时调用appium节点,你将完成。