如何在Appium上为2个不同的设备运行JUnit测试?

时间:2016-06-14 18:34:02

标签: java android selenium junit appium

我想知道如何运行可以针对2个不同设备的JUnit测试?

我看到您可以设置Appium来定位设备并为该Appium服务器设置端口但是如何让JUnit测试2个不同的设备?

设备上的Appium设置(32456和43364):

node . -p 4492 -bp 2251 -U 32456

node . -p 4491 -bp 2252 -U 43364

这将运行2个具有不同端口的Appium服务器。

在我的JUnit测试中,我通过端口设置了AndroidDriver。您如何使用相同的junit测试来测试2个不同的设备?

driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);

我们无法在JUnit代码中将两组驱动程序提供给不同的端口

driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);

driver2 = new AndroidDriver(new URL("http://127.0.0.1:4724/wd/hub"), cap);

这是不可能的,因为我们可能并不总是知道不同的设备端口。我们基本上需要让JUnit测试工作为可配置端口,我们可以将其传递给测试(不确定是否可行)。

是否可以将值传递给JUnit测试?我们正在使用JUnitCore进行测试。

driver = new AndroidDriver(new URL("http://127.0.0.1:"+ SOME_PASSED_IN_PORT + "/wd/hub"), cap);

3 个答案:

答案 0 :(得分:0)

创建多个驱动程序作为解决方案之一

driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);

相当于

driver = new AndroidDriver(new URL("http://127.0.0.1:" + "4723" + /wd/hub"), cap);

因此,您可以以一种天真的方式同时创建和使用两个不同的驱动程序 -

String port1 = "4491"; //assuming this being the port number
String port2 = "4492";
driver1 = new AndroidDriver(new URL("http://127.0.0.1:" + port1 + "/wd/hub"), cap);
driver2 = new AndroidDriver(new URL("http://127.0.0.1:" + port2 + "/wd/hub"), cap); //also the cap could differ in both the cases

注意 :您可以根据需要为驱动程序提供不同/类似的功能。这也是一种非常天真的并行执行方法,尝试使用Selenium-Grid寻找解决方案,以获得有效的方法。

答案 1 :(得分:0)

使用Selenium Grid

Selenium-Grid允许您在不同设备上并行运行测试。也就是说,针对不同设备同时运行多个测试。从本质上讲,Selenium-Grid支持分布式测试执行。它允许在分布式测试执行环境中运行测试。

答案 2 :(得分:0)

简单的方法是启动两个具有不同端口的appium服务器并更新脚本中的端口号,但是你需要复制代码,其他解决方案是使用selenium grid