元素定位
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();
}
}