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

问题描述:

我想知道如何运行可以针对2种不同设备的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); 

我们无法拥有2套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); 
+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寻求解决方案,以获得有效的方法。

+0

是的,我已经试过了但我应该指定这是不可能的,因为我们可能并不总是知道不同的设备端口。我们基本上需要让JUnit测试工作或者是可以通过测试的可配置端口(不知道这是否可能)。也许我们需要制作另一台服务器来控制哪个appium实例。我会更新这个问题。 – ALM

使用硒电网

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

+0

Selenium Grid是否允许您进行Junit测试并针对不同的设备运行它?它如何设置etten中的captern,其中driver = new AndroidDriver(新URL(“http://127.0.0.1:4723/wd/hub”),cap); – ALM

简单的方法就是你开始与不同端口的两个appium服务器和更新脚本中的端口号,但你需要复制的代码,其他的解决办法是使用硒电网

+0

2个不同的端口不是问题中所述的选项。 – ALM