元素定位
pp自动化测试过程中最重要一个环节就是元素定位,只有准确定位到了元素才能进行相关元素的操作,如输入、点击、拖拽、滑动等
元素定位方式
id
Appium中使用 find_element_by_id() 方法来进行id定位。
name
根据name进行定位,对于android来说,就是text属性
使用 find_element_by_name() 方法来进行name定位, 由于text稳定性不是很好,所以appium 1.5开始废弃了该方法。
class
classname定位是根据元素类型来进行定位,但是实际情况中很多元素的classname都是相同的,一般情况下如果有id就不必使用classname定位。
使用find_element_by_class_name() 方法来进行class定位
List定位
List定位首先是使用find_elements_by_XX获取一组相同的class属性的元素,然后使用数组下标来区分标记不同元素进行相关操作。
相对定位
相对定位是先找到该元素的有对应属性的父元素节点,然后基于父元素进行元素定位。
Xpath定位
xpath定位是一种路径定位方式,主要是依赖于元素绝对路径或者相关属性来定位,但是绝对路径xpath执行效率比较低(特别是元素路径比较深的时候),一般使用比较少。通常使用xpath相对路径和属性定位。
H5页面元素定位
Uiautomator定位
UIAutomator元素定位是 Android 系统原生支持的定位方式,虽然与 xpath 类似,但比它更加好用,且支持元素全部属性定位.定位原理是通过android 自带的android uiautomator的类库去查找元素。 Appium元素定位方法其实也是基于Uiautomator来进行封装的。 使用方法 find_element_by_android_uiautomator() 可以运用UiAutomator元素定位。
id定位: 根据元素的resource-id属性来进行定位
eg:driver.find_element_by_android_uiautomator('newUiSelector().resourceId("xxx")').send_keys('xx')
text定位:根据元素的text属性值来进行定位
eg:driver.find_element_by_android_uiautomator\('new UiSelector().text("xx")').send_keys('xxx')
class定位:
eg:driver.find_element_by_android_uiautomator\ ('new UiSelector().className("xx")').send_keys('xx')