我正在将我的 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(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
还有其他办法吗?
最佳答案
您将包名称作为变量的想法是正确的,但它必须是最终的:
public static final String appPackage = "com.mycurrentpackage";
现在您可以使用:
@AndroidFindBy(id = appPackage+":id/startup_text1")
关于java - 使用 @AndroidFindBy 为具有多个 appPackage 的 android 运行 appium 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27302104/