appium經過index查找目標控件

2.1 經過判斷控件屬性獲取控件

控件的全部屬性均可以用做判斷,好比它的text,index,resource-id是否clickable等,例如:python

2.1.1 經過文本查找目標控件

1
2
el  =  driver.findElementByXPath( "//android.widget.TextView[contains(@text,'note2')]" );
         assertThat(el.getText(),equalTo( "note2" ));

 

2.1.2 經過index查找目標控件

若是咱們像下面的方式使用index爲0來查找控件note2,那麼將會失敗,由於該xpath只是說「我要查找頁面上 android.widget.TextView類型的index爲0的控件「,但如背景所說咱們事實上有3個TextView控件,其中最上面的和中間 的控件他們的Index都是0.因此最終得到的控件實際上是Appium第一個找到的最上面文本爲」Notes「的TextView。
1
2
el  =  driver.findElementByXPath( "//android.widget.TextView[contains(@index,0)]" );
         assertThat(el.getText(),equalTo( "note2" ));

 那麼咱們就要想辦法加多點路徑,讓xpath能分辨出須要的是下面的index爲0的TextView,而不是上面的。觀看上圖的 UIAutomatorViewer控件的分層結構,發現這兩個TextView是從LinearLayout開始分叉的,因此咱們應該從該路徑開始經過 數組下標指定咱們須要的是」在LinearLayout下面的第二個FrameLayout下面的ListView下面的Index爲0的 TextView:android

1
2
el  =  driver.findElementByXPath( "//android.widget.LinearLayout[1]/android.widget.FrameLayout/android.widget.ListView/android.widget.TextView[contains(@index,0)]" );
         assertThat(el.getText(),equalTo( "note2" ));
相關文章
相關標籤/搜索