以下是通过Java1.8,appium1.72,安卓5.0.2及安卓7.0
findElementById
findElementByClassName
driver.findElementByClassName("android.widget.TextView"); 注:classname重复的可能性比较大,所以我用得很少
findElementByAndroidUIAutomator
driver.findElementByAndroidUIAutomator("new UiSelector().text(\"text\")");
driver.findElementByAndroidUIAutomator("new UiSelector().text(\"text\").enable(true)");
findElementByAccessibilityId
该字符串相当于利用原生的可访问性(Accessibility)选项,使用 Id/Name 去递归地搜索元素。
findEelementByXPath
这个方法获取元素时index是指当前父类下同名元素的序列,例如:
android.widget.RelativeLayout下面有两个android.widget.TextView,一个叫“验证码”一个叫“获取短信验证码”;
获取元素“验证码”是:
//android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.TextView[1]
“ 获取短信验证码”是:
//android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.TextView[2]
获取“微博”是:
//android.widget.RelativeLayout[1]/android.widget.RelativeLayout[2]/android.widget.TextView[3]
绝对地址(前面一根/)从哪里开始计算我也搞不懂,每次用相对地址(前面两根/),从要查找的元素开始往前推2-3级开始写地址。
如果有多个相同属性的元素你没做区分,appium默认选择找到的第一个来使用。
注:据说xpath定位较慢,我在5.0.2上感觉慢(有时候还是比较快,不知道是不是根路径和元素多少有关),在7.0上感觉还是挺快的。
android.widget.RelativeLayout下面有两个android.widget.TextView,一个叫“验证码”一个叫“获取短信验证码”;
获取元素“验证码”是:
//android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.TextView[1]
“ 获取短信验证码”是:
//android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.TextView[2]
获取“微博”是:
//android.widget.RelativeLayout[1]/android.widget.RelativeLayout[2]/android.widget.TextView[3]
绝对地址(前面一根/)从哪里开始计算我也搞不懂,每次用相对地址(前面两根/),从要查找的元素开始往前推2-3级开始写地址。
如果有多个相同属性的元素你没做区分,appium默认选择找到的第一个来使用。
注:据说xpath定位较慢,我在5.0.2上感觉慢(有时候还是比较快,不知道是不是根路径和元素多少有关),在7.0上感觉还是挺快的。
getPageSource
获取页面源码,返回xml文件,里面包含所有元素(据说是这样,但实际不是这样);
我的5.0.2获取到的源码部分元素没有,没有的元素也无法定位,但是在UIAutomatorViewer中能正常找到;
7.0中获取到源码比5.0.2中获取到的更少,但是在7.0中都能定位,在UIAutomatorViewer中也能正常找到;
还不知道原因。
查找toast提示:
ExpectedConditions.presenceOfElementLocated(By.xpath(".//*[contains(@text,'" + toast + "')]"))
其中toast表示toast提示的文字,表示查找是否包含设置的toast文字
ExpectedConditions.presenceOfElementLocated(By.xpath(".//*[@text=\" + toast + \")]"))
这样应该表示内容文本必须相等。