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" ));
相关文章
相关标签/搜索