我已经看到Selenium Grid解决方案到处运行并行测试,但我不知道这是用于物理设备还是仅用于虚拟,我需要的是在多个物理设备上进行测试。
所以我尝试以“我的方式”做到这一点,我所做的就是创建一个selenium服务器&每个物理设备的驱动程序并运行我的测试,但我遇到的主要问题是测试不是真正的并行...
有没有办法让它真正平行?
这是我的代码:
创建服务器
public static AppiumServer startServer (String deviceName){
String port="";
String boostrapPort="";
switch (deviceName){
case ONEPLUS_ONE :
port = ONEPLUS_ONE_PORT;
boostrapPort = ONEPLUS_ONE_BOOTSTRAP_PORT;
break;
.....
}
ServerArguments serverArguments = new ServerArguments();
serverArguments.setArgument("--address", "127.0.0.1");
serverArguments.setArgument("--port", port);
serverArguments.setArgument("--bootstrap-port", boostrapPort);
AppiumServer appiumServer = new AppiumServer(serverArguments);
appiumServer.startServer();
return appiumServer;
}
创建驱动程序:
@BeforeTest(alwaysRun = true)
public void setUp(){
AppiumServer samsung_S6_server = AppiumServerFactory.startServer(AppiumServerFactory.SAMSUNG_S6);
if(samsung_S6_server.isServerRunning()) {
AndroidDriver samsung_S6 = AndroidDriverFactory.getAndroidDriver(appPackage, appActivity, AppiumServerFactory.SAMSUNG_S6_PORT, AppiumServerFactory.SAMSUNG_S6);
serverList.add(samsung_S6_server);
driverList.add(samsung_S6);
} else {
System.out.println("Server running issue");
}
AppiumServer oneplus_one_server = AppiumServerFactory.startServer(AppiumServerFactory.ONEPLUS_ONE);
if(oneplus_one_server.isServerRunning()) {
AndroidDriver oneplus_one = AndroidDriverFactory.getAndroidDriver(appPackage, appActivity, AppiumServerFactory.ONEPLUS_ONE_PORT, AppiumServerFactory.ONEPLUS_ONE);
serverList.add(oneplus_one_server);
driverList.add(oneplus_one);
} else {
System.out.println("Server running issue");
}
测试:
@Test
public void openArticle (){
for(AndroidDriver driver : driverList){
WebElement el = driver.findElements(By.id("..."));
el.click();
}
}
.....