簡體   English   中英

需要使用appium為android元素識別xpath

[英]Need to identify xpath for android element using appium

我正在使用Appium框架測試我的Android應用程序。 我有一個Android屏幕,其視圖沒有id(我不想添加...),所以我想使用Xpath。

這是UI Automator Viewer中屏幕的樣子: 在此輸入圖像描述

我想得到所有的相對布局(用紅色標記 - 十六項)

我嘗試了以下方法:

 List<WebElement> webElementslist =
 mAppDriver.findElementsByXPath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.ViewAnimator[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.ScrollView[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[2]");

但我沒有收到任何物品。

我在網上搜索並找到了下一個xpath教程,嘗試了更多選項,但又沒有成功。

http://www.zvon.org/comp/r/tut-XPath_1.html#intro

http://www.w3.org/TR/xpath/

非常感謝任何幫助。

現在有一些令人討厭的錯誤,在Android上使用XPath來解釋你所看到的行為。 它們計划在1.3.1版本中修復

  1. 您無法按根節點進行搜索.. 鏈接
    • 不幸的是,這意味着冗長的xpath可能是成功的xpath (雙關語)
  2. 當你只有16個鏈接時,你有時會獲得240個元素

理想情況下,您可以查找所有16個RelativeLayoutandroid.widget.LinearLayout父級的resource-id,然后執行以下操作:

//android.widget.LinearLayout[@resource-id="foo"]/android.widget.RelativeLayout

你的詳細解決方案不起作用,因為你給了其中一個布局[2]的位置。

這是固定的:

//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.ViewAnimator[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.ScrollView[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout/android.widget.RelativeLayout

....請,請使用第一個解決方案。

我正在尋找使用UiAutomator定位器策略的問題解決方案,但還沒有答案(因為.fromChild().fromParent()似乎被打破了)

請記住//foo[1]返回所有foo節點的事實,這些節點是其父節點的第一個子節點(不是foo節點的第一個子節點),嘗試這樣的事情:

//ScrollView/LinearLayout/LinearLayout[2]/LinearLayout/RelativeLayout

未經測試,但它應該為您提供所有RelativeLayout,它們是LinearLayout的子項,LinearLayout是LinearLayout的子項,LinearLayout是LinearLayout的第二個子項,它是ScrollView的子項。

試試這個你可以輕松訪問

driver.findElement(By.xpath("//*[@class='android.widget.FrameLayout' and @bounds='[418,564][780,885]']")).click();

UI的屏幕截圖

以下代碼對我有用:

WebElement webElement = driver.findElementByXPath("//android.widget.ListView[1]/android.widget.LinearLayout[1]");

禮貌: 無法在Appium中使用xpath定位元素

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM