2015-03-02 55 views

回答

2

我有我的應用程序在真實設備上測試(但它也可以在仿真器上)連接到我的桌面並運行它,打開一些屏幕/頁面。比我以管理員身份運行uiautomatorviewer.bat(奇怪,但我必須以管理員身份運行它)。比單擊UI Automator Viewer左上角的設備屏幕圖標圖標,我可以在右側窗格中看到屏幕截圖和Android類。我可以導航,點擊不同的元素並觀察它們的層次結構。

1

查看上面的條款鏈接和ListView有資源ID或文本屬性?

我想你可以嘗試類似如下:

xpath="(//android.widget.ListView[contains(@resource-id,'some_id')]//android.widget.View)[2]/android.widget.View" 

試圖找到節點,然後創建與孩子相對路徑。

// - means any after (any child) 
/- goes immediate after 
[2] - the second item that corresponds the criteria 

,如果你知道text屬性的值,你可以使用類似:[contains(@text, 'some part of text')]

+0

沒有,它不具有資源的ID或文本屬性。但是,術語鏈接視圖具有內容描述。所以我用 driver.findElement(By.xpath(「// android.view.View [@ content-desc ='Terms Link']」))。click(); 現在,我的測試用例通過,但在設備上沒有點擊執行。我應該使用android.widget.View而不是android.view.View? – Suman 2015-03-03 12:55:18

+0

不,因爲我看到android.view.View有屬性clickable = true。嘗試統計有多少元素符合屏幕上的標準。 'List elements = \t \t driver.findElements(By.xpath(「// android.view.View [@ content-desc ='Terms Link']」)); \t \t System.out.println(elements.size());' – Alex 2015-03-03 13:07:12

+0

另外,我會建議在您的Android設備設置(開發人員)上設置以顯示觸摸和點擊以查看Appium腳本在哪裏點擊的確切位置 – Alex 2015-03-03 13:40:09

1

試試這個:

driver.findElementsByXPath("//*[@class='android.view.View' and @index='0']"); 
+0

確保根據需要更改類名稱和索引。 – Gaurav 2015-03-03 13:59:39

+0

謝謝,這適用於當前顯示在設備屏幕上的元素,但對於在滾動後顯示的元素不起作用,儘管我的測試用例即使沒有在設備屏幕上看到實際的點擊也會通過。 – Suman 2015-03-03 14:53:45

+0

@Suman它應該很簡單。只需找到x和y座標並滾動到它。然後通過使用我上面提到的相同的方法點擊元素 – Gaurav 2015-03-03 15:57:19