java - 使用 @AndroidFindBy 为具有多个 appPackage 的 android 运行 appium 测试

标签 java android selenium-webdriver appium

我正在将我的 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/

相关文章:

java - 从小程序调用 dll 方法

android - 显示 DialogFragment 时保持沉浸式模式

java - 一旦发生异常,如何停止测试中的代码执行

python - 找不到元素 Selenium Python

java - 如何将多个参数传递给 Xlint java 编译器选项

java - 为什么等于功能不起作用?

java - 使用线程对象引用调用方法

android - Realm Kotlin 不在架构中

android - Flutter 使用 C/C++ 代码构建 - 示例?

java - Selenium Webdriver - 验证文本框写保护?