2016-09-16 127 views
0

我想我SeeTest套件轉換成Appium,但我有一個大問題:Appium選擇元素的ID

我不能選擇通過他們的@id屬性的元素。當我嘗試按ID選擇時,它會顯示「找不到元素」。當我通過uiautomateviewer查看apk時,看不到任何元素@id

SeeTest需要一個apk來成爲「儀器化」,以便通過@id進行選擇。 Appium有沒有相當的「儀器」?

+0

如果您使用'id''定位器策略,如果您使用xpath或'id'(而不是'@ id'),則使用'@ resource-id'。但是,在xpath的情況下,您需要完整的id,包名和':id /'部分。 – njzk2

+0

@ njzk2否@ @ resource-id在uiautomatorviewer中都可見。我正在使用API​​版本17(Android 4.2.2),如果這是相關的 –

+0

resource-id僅僅是您在您的視圖中的id xml佈局 – njzk2

回答

0

原來這是因爲Appium只支持通過Android API級別18+的id進行選擇。我17歲,所以我切換到Selendroid Appium後端。

0

一個很好的經驗法則是,如果它沒有出現在Appium檢查器中,請不要使用它。你可以做的是沿着線的東西:

driver.findElement(By.xpath("//<UIElementType[contains(@<identifier>, '<identifier value>')]>");

凡標識符可以是

  • 名稱或內容遞減

  • 標籤

  • 文本

等等。

希望這將有助於您的更改。

+0

那麼,我有一個很大的自動化框架已經在使用id的(與SeeTest作爲後端)。我只想讓Appium的行爲與SeeTest相同,因爲ID的 –

+0

名稱在Android上不起作用。標籤也沒有。你最好的投注是資源ID,內容desc和文本。 – njzk2

+0

我目前無法訪問我的appium代碼,但有可能以上述方式找到它,但是使用'contains(@ resource-id,'com.package.path.id')' 否則I不知道是否有辦法以類似的方式找到。你能否告訴我一個你的SeeTest如何工作的例子。我不熟悉它。 – JaysonP

0
public void athenaclick(String element) { 
    WebElement webElement = driver.findElement(By.id(element)); 
    webElement.click(); 
    System.out.println("Click element: "+element); 
} 

在seetest當你樂器你會得到額外的屬性可能不可用時appium如:文本顏色爲seetest是支付工具,appium是開源的。