我正在将android apk的appPackage从com.mycurrentpackage更改为com.myfuturepackage。
我将所有元素的ID定义为
com.mycurrentpackage:id / elementID
目前,我发现该元素为
@AndroidFindBy(id =“ com.mycurrentpackage:id / startup_text1”)
@CacheLookup
私人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
私人MobileElement startup_text1;
在编译时说
错误:(42、35)Java:属性值必须恒定
还有其他方法吗?
最佳答案
您将包名称作为变量的想法是正确的,但必须是最终的:
public static final String appPackage = "com.mycurrentpackage";
现在您可以使用:
@AndroidFindBy(id = appPackage+":id/startup_text1")