我将Appium与Java结合使用来自动执行针对移动应用程序的测试。显然,当我想为Android编写测试时,我使用AndroidDriver<MobileElement> driver = [..]
,而对于iOS,我需要使用IOSDriver<MobileElement> driver = [..]
,尽管使用这种方法,我需要为iOS和Android编写两次相同的测试。有没有一种方法可以让我根据AndroidDriver
和iOSDriver
之间进行选择的某种变量来动态选择Appium Driver的类型?我尝试过:
if(platform == "Android"){
//returns AndroidDriver
AppiumDriver<MobileElement> driver = COMMON.startAndroid(name, id, platform, version);
} else {
//returns IOSDriver
AppiumDriver<MobileElement> driver = COMMON.startIOS(name, id, platform, version);
}
但是下面在Test Eclipse中指出,这种方法driver
尚未定义
答案 0 :(得分:1)
这两个驱动程序均扩展了WebDriver
接口(通过继承)。您可以从这种类型定义驱动程序。它也是OOP encapsulation concept
WebDriver driver;
if(platform.equals("Android")){
driver = COMMON.startAndroid(name, id, platform, version);
} else {
driver = COMMON.startIOS(name, id, platform, version);
}
答案 1 :(得分:0)
public class AppiumController {
public static OS executionOS = OS.ANDROID;
public AppiumDriver<MobileElement> driver;
DesiredCapabilities capabilities = new DesiredCapabilities();
public enum OS {
ANDROID,
IOS,
MOBILEBROWER_IOS,
MOBILEBROWER_ANDROID
}
public void start() {
if (driver != null) {
return;
}
switch(executionOS){
case ANDROID:
// set android caps
driver = new AndroidDriver<MobileElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
case IOS:
// set ios caps
driver = new IOSDriver<MobileElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
case MOBILEBROWER_IOS:
// set ios browser caps
driver = new IOSDriver<MobileElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
case MOBILEBROWER_ANDROID:
// set android browser caps
driver = new AndroidDriver<MobileElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}
}
public void stop() {
if (driver != null) {
driver.quit();
driver = null;
}
}
}