元素定位

uiautomatorviewer是SDK自带的一个APP元素查看工具,通过这个工具我们可以查看一下App view上面的元素的属性,辅助我们编写元素定位相关代码。

UIAutomatorViewer如何使用

  • 将测试机连接到电脑上,并且将被测试的App签名后安装的测试机上。
  • 打开我们安装的SDK文件夹,在\sdk\tools下找到批处理文件uiautomatorviewer.bat,运行这个文件

还有一种方式是通过 ADT内的DDMS打开

find_elements方法讲解

常用的几种定位方法:

直接文本定位

driver.findElementByAndroidUIAutomator("new UiSelector().text(\"Add note\")");

元素定位方式介绍分析:

通过id定位

  driver.findElement(By.id("id is me"));

通过name定位

  driver.findElement(By.name("name is me"));

通过className定位

  driver.findElement(By.className("className is me"));

通过xpath定位

 driver.findElementByXPath("//android.widget.TextView[contains(@text,'is xpathname')]");

List遍历:

 List<WebElement> textFieldsList = driver.findElementsByClassName("android.widget.EditText");
        textFieldsList.get(0).sendKeys("Some Name");
        textFieldsList.get(2).sendKeys("[email protected]");
        driver.findElementByName("Save").click();

LinkText

driver.findElementByClassName("android.widget.TextView");

定位不到怎么办?

desc

driver.findElementByAndroidUIAutomator("new UiSelector().descriptionContains(\""+name+"\")");

组合定位:

driver.findElement(By.className(className)).findElements(By.tagName("tagname is me")).get(i)

driver.findElement(By.className(className)).findElements(By.id("id is me")).get(i)

driver.findElement(By.className(className)).findElements(By.name("name is me")).get(i)

List遍历判断:

    List<WebElement> textFieldsList = driver.findElementsByClassName("android.widget.EditText");
           for(int i=0;i<textFieldsList.size();i++)    {
                 if(textFieldsList.get(i).equals("value")){
                     textFieldsList.get(i).click();
                 }    
           }