使用@AndroidFindBy为多个appPackage运行android appium测试
我正在将我的android apk的appPackage从com.mycurrentpackage更改为com.myfuturepackage。使用@AndroidFindBy为多个appPackage运行android appium测试
我有元素的所有ID定义为
com.mycurrentpackage:id/elementID
目前我找到元素
@AndroidFindBy(id = "com.mycurrentpackage:id/startup_text1")
@CacheLookup
private MobileElement startup_text1;
我希望能够动态地改变它。所以我定义了一个静态变量appPackage。
这里是构造
...
appPackage = driver.getCapabilities().getCapability("appPackage").toString();
PageFactory.initElements(new AppiumFieldDecorator(this.driver, 30, TimeUnit.SECONDS), this);
...
正如你可以看到appPackage正在初始化元素之前已经定义的一部分。
但是,当我做这种方式
@AndroidFindBy(id = appPackage+":id/startup_text1")
@CacheLookup
private MobileElement startup_text1;
在编译时,它说
Error:(42, 35) java: attribute value must be constant
是否有任何其他方式做到这一点?
可我也用
@AndroidFindBys({
@AndroidFindBy(id = "com.mycurrentpackage:id/startup_text1"),
@AndroidFindBy(id = "com.futurepackage:id/startup_text1")
})
@CacheLookup
private MobileElement startup_text1
当我用这一个它需要很长的时间来加载页面。
我是否需要将其列为
private List<MobileElement> startup_text1
你有包名称作为变量是正确的,但它必须是最后的想法:
public static final String appPackage = "com.mycurrentpackage";
现在你可以使用:
@AndroidFindBy(id = appPackage+":id/startup_text1")