当我专门为在App Center上运行而编写appium测试时(因此必须使用自定义的“增强驱动程序”),看起来我只能声明
driver
作为
EnhancedAndroidDriver
类型,或
EnhancedIOSDriver
类型
public EnhancedAndroidDriver<MobileElement> driver;
// public EnhancedIOSDriver<MobileElement> driver; <----- can't declare same variable twice
public AppiumDriver<MobileElement> getDriver() throws IOException {
String PLATFORM_NAME = System.getenv("XTC_PLATFORM");
if (PLATFORM_NAME.equals("Android")) {
EnhancedAndroidDriver<MobileElement> androiddriver = Factory.createAndroidDriver(new URL("http://localhost:4723/wd/hub"), caps);
driver = androiddriver;
} else if (PLATFORM_NAME.equals("iOS")) {
EnhancedIOSDriver<MobileElement> iosdriver = Factory.createIOSDriver(new URL("http://localhost:4723/wd/hub"), caps);
driver = iosdriver; <---- compiler error, wrong type
}
return driver;
}
我想在一个文件中运行一个简单的测试,该文件将在两个平台上运行,但似乎我必须选择android或ios来运行该文件。我如何避免复制所有的测试文件?我使用的是react native,我的应用程序在两个平台上基本相同。我对常规的AppiumDriver也做了类似的操作。
任何以编程方式切换变量类型“EnhancedIOS/AndroidDriver”的建议
驾驶员
在Java中指的是??
使用常规的AppiumDriver,我可以做到这一点:
private static AppiumDriver<MobileElement> driver;
public AppiumDriver<MobileElement> getDriver() throws IOException {
if (PLATFORM_NAME.equals("Android")) {
driver = new AndroidDriver<MobileElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
} else if (PLATFORM_NAME.equals("iOS")) {
driver = new IOSDriver<MobileElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}
return driver;
}
然后在测试中通用地使用驱动程序。但似乎不可能对App Center Enhanced驱动程序采取这种方法,因为它们不共享一个通用类型(或者我对Java的了解不够,无法弄清楚)。有办法解决这个问题吗??