使用@AndroidFindBy运行带有多个appPackage的Android的appium测试

时间:2014-12-04 19:13:49

标签: 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(新的AppiumFieldDecorator(this.driver,30,TimeUnit.SECONDS),this);

     

...

正如您所见,在初始化元素之前已经定义了appPackage。

但是当我这样做的时候

  

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

     

@CacheLookup

     

private MobileElement startup_text1;

编译时说

  

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

还有其他办法吗?

2 个答案:

答案 0 :(得分:1)

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

public static final String appPackage = "com.mycurrentpackage";

现在你可以使用:

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

答案 1 :(得分:0)

我还可以使用

@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