Appium 元素定位

元素定位

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

UIAutomatorViewer如何使用

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

  • find_elements方法讲解

    常用的几种定位方法:

    直接文本定位

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

    元素定位方式介绍分析:

    通过id定位

      driver.findElement(By.id("com.eebochina.ehr:id/btn_cancel"));
    

    通过name定位

      driver.findElement(By.name("取消"));
    

    通过className定位

      driver.findElement(By.className("android.widget.TextView"));
    

    通过xpath定位

     driver.findElementByXPath("//android.widget.TextView[@resource-id=\"com.eebochina.ehr:id/btn_cancel\"]");
    

    List遍历:

     List textFieldsList = driver.findElementsByClassName("android.widget.TextView");
            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 textFieldsList = driver.findElementsByClassName("android.widget.EditText");
               for(int i=0;iif(textFieldsList.get(i).equals("value")){
                         textFieldsList.get(i).click();
                     }    
               }

你可能感兴趣的:(Appium 元素定位)