微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android-使用Appium和Selenium网格进行并行测试

我正在尝试使用appium&在2个设备上运行并行测试.硒网格,但由于某种原因,它仅在第一台节点服务器(和第一台设备)上运行,而在第二台服务器上什么也没有发生.

另外,如果我关闭第一台服务器并运行测试,那么该测试将在第二台服务器上运行,因此服务器应该没有任何问题.

是否必须提供一些参数才能将其设置为parallel?

谢谢您的帮助 !

这是我的文件

一个服务器json文件

{
  "capabilities":
  [
    {
      "browserName": "SamsungS6",
      "deviceName": "04157df40862d02f",
      "version":"6.0.1",
      "maxInstances": 3,
      "platform":"ANDROID"
    }
  ],
  "configuration":
  {
    "cleanUpCycle":2000,
    "timeout":30000,
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "url":"http://localhost:4491/wd/hub",
    "host": "localhost",
    "port": 4491,
    "maxSession": 5,
    "register": true,
    "registerCycle": 5000,
    "hubPort": 4433,
    "hubHost": "localhost"
   }
}

第二个服务器json文件

{
  "capabilities":
  [
    {
      "browserName": "OnePlusOne",
      "deviceName": "14b2b276",
      "version":"6.0.1",
      "maxInstances": 3,
      "platform":"ANDROID",
      "platformName":"ANDROID"
    }
  ],
  "configuration":
  {
    "cleanUpCycle":2000,
    "timeout":30000,
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "url":"http://localhost:4490/wd/hub",
    "host": "localhost",
    "port": 4490,
    "maxSession": 5,
    "register": true,
    "registerCycle": 5000,
    "hubPort": 4433,
    "hubHost": "localhost"
  }
}

运行硒网格:

java -jar selenium-server.jar -role hub -port 4433 

运行第一个方案

node.exe node_modules\appium\bin\appium.js --nodeconfig myfirstscenario.json -p 4490 -U 14b2b276 -bp 5490 --chromedriver-port 6490

运行第二种情况

node.exe node_modules\appium\bin\appium.js --nodeconfig mysecondscenario.json -p 4491 -U 04157df40862d02f -bp 5491 --chromedriver-port 6491

考试

@BeforeTest(alwaysRun = true)
public void setUp(){

    try {
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "ANDROID");
        capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "");
        capabilities.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, appPackage);
        capabilities.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, appActivity);

        driver = new AndroidDriver(new URL("http://localhost:4433/wd/hub"), capabilities);
        new webdriverwait(driver, 60);
    } catch (MalformedURLException e) {
        e.printstacktrace();
    }

}

@Test
public void test(){
    System.out.println("hello world");

    try {
        sleep(6000);
    } catch (InterruptedException e) {
        e.printstacktrace();
    }
}


@AfterTest(alwaysRun = true)
public void closeDriver(){
    driver.quit();
}

解决方法:

问题是因为您既未提供DesiredCapabilities中唯一的内容,也未添加自定义CapabilityMatcher.认情况下,网格仅使用browserName,版本和平台来决定将测试路由到哪个节点.

这是解决问题的一种方法.将一个名为“ applicationName”的新密钥添加到您的nodeConfig.json中,并分别设置“ OnePlusOne”和“ SamsungS6”的值.然后,将一个名为“ applicationName”的新功能添加到测试中所需的功能,然后分别设置“ OnePlusOne”和“ SamsungS6”的值.之后,您的测试将被路由到正确的设备.

您可以在我的博客文章here中了解有关此内容的更多信息.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐