2014-12-04 79 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") 
相關問題