我正在将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")

10-06 06:31