【问题标题】:How to configure Nightwatch.js + Selenium Hub + Appium + real mobile devices?如何配置 Nightwatch.js + Selenium Hub + Appium + 真实移动设备?
【发布时间】:2016-09-27 14:36:38
【问题描述】:

我有一个带有 selenium hub 的工作 selenium 配置,这是我通过 Nightwatch.js 启动的 firefox/chrome 桌面测试的入口点。

现在我想为移动设备添加测试,所以,经过一番搜索,我在 Mac 上配置了一个 Appium,如下所示插入我的集线器:

{
    "capabilities": [
        {
            "browserName": "Safari",
            "platformName": "iOS",
            "platformVersion": "9.3",
            "maxInstances": 1,
            "platform": "MAC"
        }
    ],
    "configuration": {
        "cleanUpCycle": 2000,
        "timeout": 30000,
        "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
        "url":"http://192.168.24.222:4723/wd/hub",
        "host": "192.168.24.222",
        "port": 4723,
        "maxSession": 1,
        "register": true,
        "registerCycle": 5000,
        "hubPort": 4444,
        "hubHost": "selenium-hub-host"
    }
}

现在我想:

  1. 使用 Appium 配置虚拟设备(我迷失了官方文档,对 Apple 设备不熟悉)
  2. 有适当的 Nightwatch 测试配置以在它们上运行
  3. 在 Appium 端添加一个或多个真实设备

欢迎任何帮助,谢谢

编辑:我已经实现了 1. 和 2. 通过增强 nightwatch task def 和 appium 功能的功能:

在 Nightwatch.js 上:

"ios": {
    "desiredCapabilities" : {
        "browserName" : "Safari",
        "deviceName": "iPhone Simulator",
        "platformName" : "iOS",
        "platform" : "MAC",
        "javascriptEnabled" : true,
        "acceptSslCerts" : true
    }
}

在 Appium nodeconf.json 上:

"capabilities": [
    {
        "browserName": "Safari",
        "platformName": "iOS",
        "platformVersion": "9.3",
        "deviceName": "iPhone Simulator",
        "maxInstances": 1,
        "platform": "MAC"
    }
]

但现在我被真实设备困住了,它不想在 selenium 集线器上注册我的 nodeconf(显然是无效的参数):

{
    "browserName": "Safari",
    "platformName": "iOS",
    "platformVersion": "8.1",
    "deviceName": "testmac’s iPad",
    "udid": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "maxInstances": 1,
    "platform": "MAC"
}

这是我的中心网格:

【问题讨论】:

    标签: android ios selenium appium nightwatch.js


    【解决方案1】:

    要连接多个 iOS 设备,您必须使用here 中描述的解决方法。您必须在启动 Appium 时提供额外的参数:

    .node -p 6001 -U --tmp /temp/dir1 &
    .node -p 6002 -U --tmp /temp/dir2 &
    

    运行 Android 设备不受此限制。我不知道这是否是正确的态度,但几周前它对我有用。配置文件——huaweiG6.json:

    {
      "capabilities":
      [
        {
          "browserName": "HuaweiG6",
          "deviceName":"8c34fd0c5a94",
          "version":"4.3",
          "maxInstances": 1,
          "platform":"ANDROID",
          "newCommandTimeout":"30",
          "deviceReadyTimeout":5
        }
      ],
      "configuration":
      {
        "cleanUpCycle":2000,
        "timeout":10800,
        "url":"http://127.0.0.1:4727/wd/hub",
        "host": "127.0.0.1",
        "port": 4727,
        "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
        "maxSession": 1,
        "register": true,
        "registerCycle": 5000,
        "hubPort": 4444,
        "hubHost": "172.17.0.232"
      }
    }
    

    然后使用命令启动 Appium:

    appium --nodeconfig huaweiG6.json -p 4727 -cp 4727 -U 8c34fd0c5a94
    

    -U 参数相当于here 中描述的-udid。你可以通过运行获取id:

    adb devices
    

    这在安装 Android SDK 后是可能的。您的 deviceName 参数应该具有相同的值。如果您在连接到集线器时遇到问题,请尝试更改 hubHost 参数 - 它应该是正在运行的集线器实例的域或 IP。

    我已经使用来自https://github.com/michaeltamm/junit-toolbox 的跑步者让我的测试并行运行。 Java 用户的替代方法是使用 Maven surefire 插件http://maven.apache.org/surefire/maven-surefire-plugin/examples/fork-options-and-parallel-execution.html

    祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      • 1970-01-01
      相关资源
      最近更新 更多