Java 使用@AndroidFindBy使用多个appPackage为android运行appium测试

Java 使用@AndroidFindBy使用多个appPackage为android运行appium测试,java,android,selenium-webdriver,appium,Java,Android,Selenium Webdriver,Appium,我正在将android apk的appPackage从com.mycurrentpackage更改为com.myfuturepackage 我将元素的所有ID定义为 com.mycurrentpackage:id/elementID 目前我发现元素为 @AndroidFindBy(id=“com.mycurrentpackage:id/startup\u text1”) @缓存查找 私人移动设备启动_text1 我希望能够动态地更改它。所以我定义了一个静态变量appPackage 这是构造函数的

我正在将android apk的appPackage从com.mycurrentpackage更改为com.myfuturepackage

我将元素的所有ID定义为

com.mycurrentpackage:id/elementID

目前我发现元素为

@AndroidFindBy(id=“com.mycurrentpackage:id/startup\u text1”)

@缓存查找

私人移动设备启动_text1

我希望能够动态地更改它。所以我定义了一个静态变量appPackage

这是构造函数的一部分

appPackage=driver.getCapabilities().getCapability(“appPackage”).toString()

PageFactory.initElements(新的AppiumFieldDecorator(this.driver,30,TimeUnit.SECONDS),this)

正如您所看到的,在初始化元素之前已经定义了appPackage

但是当我这样做的时候

@AndroidFindBy(id=appPackage+“:id/startup_text1”)

@缓存查找

私人移动设备启动_text1

编译时说

错误:(42,35)java:属性值必须为常量

还有别的方法吗?

我也可以用吗

@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
私有列表启动\u text1

将包名作为变量的想法是正确的,但必须是最终的:

public static final String appPackage = "com.mycurrentpackage";
现在您可以使用:

@AndroidFindBy(id = appPackage+":id/startup_text1")