2014-12-04 104 views
0

我正在将我的android apk的appPackage从com.mycurrentpackage更改为com.myfuturepackage。使用@AndroidFindBy为多个appPackage运行android appium测试

我有元素的所有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

是否有任何其他方式做到这一点?

回答

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 
0

你有包名称作为变量是正确的,但它必须是最后的想法:

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

现在你可以使用:

@AndroidFindBy(id = appPackage+":id/startup_text1") 
相关问题