当我专门编写 appium 测试以在 App Center 上运行时(因此必须使用自定义的“增强驱动程序”),看起来我只能声明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 来运行该文件。如何避免重复所有测试文件?我正在使用本机反应,我的应用程序在两个平台上基本相同。我用常规的 AppiumDriver 做了类似的事情。
driver
任何建议以编程方式切换变量在 Java 中引用的“EnhancedIOS/AndroidDriver”类型?
使用常规的 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 的了解不够,无法弄清楚)。有没有办法解决这个问题?