2016-07-22 74 views
6

我使用本機做出反應,開發,需要終端到終端的測試應用程序發現。強大的陣營本土元素使用Appium

從Selenium WebDriver背景來看,在我看來,與WebDriver相比,在Appium中查找元素可能非常尷尬,因爲本機組件只有ID和一個非用戶定義的類。

  1. 有沒有辦法給元素添加某種元數據以便於查找?

說一下,如果我有一個單元格內有複雜元素的表格,而且我需要先找到正確的行,然後找到單元格,然後找到正確的元素在單元格內進行操作。

理想我希望能夠通過搜索類似「myTargetRows」枚舉行。這會給我一個行列表。

  1. 如果我理解正確,在本機應用程序中沒有兩個組件可以具有相同的ID,所以我不能像這樣使用ID,對吧? (即,對於多個行組件,使用相同的ID,「myTargetRows」)。
  2. 如果不是這樣,我應該使用編號的ID,如「myTargetRow0」,「myTargetRow1」等,然後使用XPath部分匹配的ID?
  3. 難道還有更好的辦法嗎?
  4. 如果我可以做這樣的事情,我可以那麼就鏈條中的人findElement要求找到合適的嵌套元素我想要什麼?

P.S:我不想硬編碼在我定位器準確組件層次結構,以避免應我在意見中移動任何東西它們無效,那麼這些點和點擊的解決方案也無濟於事。

P.s. 2:即使我需要爲自己實現某種抽象,解決方案也必須在Android和iOS上都能工作。

+0

http://stackoverflow.com/a/372​​95343/1746118檢查,如果這有助於你以某種方式 – nullpointer

+0

「沒有兩個組件可以有相同的ID」不是一個好的假設。儘管長期的做法很好。你也可以在appium中查找如何使用'List '來枚舉,應該解決你的問題的2〜5個問題 – nullpointer

回答

0

,您應該使用視圖的accessibilityLabel道具。

accessibilityLabel PropTypes.node

將覆蓋年代由屏幕閱讀器讀取當用戶 與元素進行交互的文本。默認情況下,標籤由遍歷所有子項的 構建,並累積由空格分隔的所有文本節點 。

更多信息,可以發現here

對於唯一的ID,可以說你有一個ListView和100行。你可以結合rowId和靜態文本accessibilityLabel

例如:0_MyCustomRow,1_MyCustomRow

+0

Muckck你有這個工作代碼的例子嗎? – goldylucks

0

採取醬實驗室博客看看article,這就是處理RN的應用程序的一個很好的例子。