[英]Appium, Cucumber and Junit how to run tests in parallel on multiple devices
尝试在多个设备上并行执行我的appium测试。
我目前可以在一台Android设备上执行测试用例。 经过修改和修改后,我无法使测试并行运行。
这是我当前的设置。 希望可以并行执行测试,而不需要酱实验室或硒网格。
我的Junit跑步者示例
@RunWith(Cucumber.class)
@CucumberOptions(plugin = {"json:target/cucumber.json", "pretty"}, features = {
"src/test/resources/features/
},
glue = "com.test.stepdefs")
public class RunCukesTest {
private static AppiumDriverLocalService service;
public static File file;
@BeforeClass
public static void startAppium() throws IOException {
System.out.println("YOUR OS NAME : " + osName);
String nodePath = null;
String appiumPath = null;
ServerArgument argument;
if (osName.contains("mac")) {
// mac paths
nodePath = "/usr/local/bin/node";
appiumPath = "/usr/local/lib/node_modules/appium/build/lib/main.js";
service = AppiumDriverLocalService.buildService(new AppiumServiceBuilder()
.usingDriverExecutable(new File(nodePath))
.usingPort(4723)
.withArgument(GeneralServerFlag.LOG_LEVEL,
"error")
.withAppiumJS(new File(appiumPath)));
} else if (osName.contains("windows")) {
service = AppiumDriverLocalService.buildDefaultService();
} else if (osName.contains("linux")) {
// linuxs path
nodePath = System.getenv("PRODUCTION") + "/.linuxbrew/bin/node";
appiumPath =
System.getenv("PRODUCTION") + "/.linuxbrew/lib/node_modules/appium/build/lib/main.js";
service = AppiumDriverLocalService.buildService(new AppiumServiceBuilder()
.usingDriverExecutable(new File(nodePath))
.usingPort(4723)
.withAppiumJS(new File(appiumPath)));
}
service.addOutPutStream(stream);
service.start();
}
@AfterClass
public static void stopAppium() {
service.stop();
}
还有我的一个例子
@Configuration
public class AppUtils {
@Value("${explicit.wait}")
public int explicitWaitTime;
@Value("${implicit.wait}")
public int implicitWaitTime;
@Value("${default.wait}")
public int defaultWaitTime;
public String applicationName;
public DesiredCapabilities capabilities;
@Value("${appium.server.port}")
private String appiumPort;
@Value("${automation.instrumentation}")
private String instrumentation;
@Value("${browser.name}")
private String browserName;
@Value("${platform.name}")
private String platformName;
@Value("${device.name}")
private String deviceName;
@Value("${platform.version}")
private String platformVersion;
@Value("${new.command.timeout}")
private String newCommandTimeout;
@Value("${app.package}")
private String appPackage;
@Value("${device.ready.timeout}")
private String deviceReadyTimeout;
private URL serverUrl;
private AppiumDriver<? extends MobileElement> driver;
@Bean(destroyMethod = "quit")
@Scope("cucumber-glue")
public AndroidDriver getDriver() throws MalformedURLException {
capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Chrome");
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, platformVersion);
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, platformName);
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, deviceName);
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, instrumentation);
capabilities.setCapability("appPackage", "com.android.chrome"); //To be moved to properties
capabilities.setCapability("appActivity", "com.google.android.apps.chrome.Main"); //To be moved to properties
serverUrl = new URL("http://localhost:" + appiumPort + "/wd/hub");
// LoggingPreferences logPrefs = new LoggingPreferences();
// logPrefs.addPreferences()
// capabilities.setCapability(CapabilityType.LOGGING_PREFS, logs);
driver = new AndroidDriver(serverUrl, capabilities);
driver.manage().timeouts().implicitlyWait(implicitWaitTime, TimeUnit.SECONDS);
//driver.setLogLevel(Level.OFF);
return (AndroidDriver) driver;
}
}
找不到与此相关的任何文档,希望对您有所帮助。
您应该启动另一个监听不同端口的appium服务器实例,然后使用此新服务器端口功能启动测试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.