Friday 21 November 2014

Appium: Remote Execution (Grid Execution)












Appium: Remote Execution (Grid Execution)


Source for this post: official github page

Selenium Grid

You are able to register your appium server with a local Selenium grid (setup docs) by using the --nodeconfig server parameter.
> appium --nodeconfig /path/to/nodeconfig.json
# or, if running from source:
> node . --nodeconfig /path/to/nodeconfig.json
In the node config file you have to define the browserNameversion and platform and based on these parameters the grid will re-direct your test to the right device. You will also need to configure your host details and the selenium griddetails. For a full list of all parameters and descriptions look here
Once you start the appium server and it registers with the grid, you will see your device on the grid console page:
"http://<grid-ip-adress>:<grid-port>/grid/console"

Grid Node Configuration Example json file

{
  "capabilities":
      [
        {
          "browserName": "<e.g._iPhone5_or_iPad4>",
          "version":"<version_of_iOS_e.g._7.1>",
          "maxInstances": 1,
          "platform":"<platform_e.g._MAC_or_ANDROID>"
        }
      ],
  "configuration":
  {
    "cleanUpCycle":2000,
    "timeout":30000,
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "url":"http://<host_name_appium_server_or_ip-address_appium_server>:<appium_port>/wd/hub",
    "host": <host_name_appium_server_or_ip-address_appium_server>,
    "port": <appium_port>,
    "maxSession": 1,
    "register": true,
    "registerCycle": 5000,
    "hubPort": <grid_port>,
    "hubHost": "<Grid_host_name_or_grid_ip-address>"
  }
}
Valid platforms are listed here
If urlhost, and port are not given, the config will be auto updated to point to localhost:whatever-port-Appium-started-on.
If your Appium server is running on a different machine to your Selenium Grid server, make sure you use an external name/IP address in your host & url docs; localhost and 127.0.0.1 will prevent Selenium Grid from connecting correctly.

Sample nodeconfig.json

{
"capabilities":
[
{
"browserName": "",
"version":"",
"maxInstances": 1,
"platform":"ANDROID"
}
],
"configuration":
{
"cleanUpCycle":2000,
"timeout":30000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url":"http://172.20.67.130:4723/wd/hub",
"host":"172.20.67.130",
"port": 4723,
"maxSession": 1,
"register": true,
"registerCycle": 5000,
"hubPort": 4444,
"hubHost": "172.20.68.161"
}
}
Note:

copy your config file to the http://www.jsoneditoronline.org/ ,it will show you the location of syntax error


Below is the screenshot that explains about General Settings for Remote Device execution


Below screenshot explains about json configuration

No comments:

Post a Comment

:)