我正在将我的android apk的appPackage从com.mycurrentpackage更改为com.myfuturepackage。
我将所有元素的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(新的AppiumFieldDecorator(this.driver,30,TimeUnit.SECONDS),this);
...
正如您所见,在初始化元素之前已经定义了appPackage。
但是当我这样做的时候
@AndroidFindBy(id = appPackage +“:id / startup_text1”)
@CacheLookup
private MobileElement startup_text1;
编译时说
错误:(42,35)java:属性值必须是常量
还有其他办法吗?
答案 0 :(得分:1)
您将包名称作为变量的想法是正确的,但它必须是最终的:
public static final String appPackage = "com.mycurrentpackage";
现在你可以使用:
@AndroidFindBy(id = appPackage+":id/startup_text1")
答案 1 :(得分:0)
我还可以使用
@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