元素定位
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<WebElement> textFieldsList = driver.findElementsByClassName("
android.widget.TextView
"); textFieldsList.get(0).sendKeys("Some Name"); textFieldsList.get(2).sendKeys("Some@example.com"); 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(); } }