【问题标题】:Not able to connect multiple appium node to selenium grid无法将多个 appium 节点连接到 selenium 网格
【发布时间】:2016-06-08 01:56:50
【问题描述】:

我想在多个设备上并行运行 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 节点时,它无法连接关闭命令提示符而没有给出任何错误日志。

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

是否有任何替代方法可以将 appium 节点注册到 selenium 网格,或者上面是否缺少我的东西?

【问题讨论】:

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


    【解决方案1】:

    我已经为每个 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 类的主要方法时。我将我的覆盖 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
    

    所以,回到您的问题,在调用 appium 节点时使用 --bootstrap 6024,您将通过。

    【讨论】:

      猜你喜欢
      • 2017-10-11
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      • 2018-03-31
      • 1970-01-01
      相关资源
      最近更新 更多