1、 元素定位对于自动化测试来说,核心技能就是对象的定位了。不管是web页面上的按钮或输入框,还是移动app上的一个按钮或输入框,我们要想对其进行点击或输入操作,酡箔挝棍前提是要先找到这个对象。webdriver提供了八种元素定位的方法:
2、在python语言中对应的定位方法如下:
3、一组元素定位的方法如下:
4、Appium完全继承了WebDriver中所定义的这些方法,除此之外对其进行了扩展,以便适合移动端对象的定位爵奏笆棚与操作。由Mobile JSON Wire Protocol协议中定义的方法,更适合移动设备上的控件定位。ios uiautomation:一个递归的、对应使用UIAutomation library搜索元素的字符串(IOS-only)。android uiautomator:一个递归的、对应使用UIAutomation Api搜索元素的字符串(Android-only)。accessibility id:一个递归的、对应本地Accessibility选项实现的Id/Name进行元素搜索的字符串。对于python来说,在WebDriver的方法的基础上增加了下列方法:
5、但是我们对照查询到的元素,可以发现很多的定位方法无法实现。
6、点击审查元素,发现根本就没有name什么的,最多的还是class、id元素。
7、所以我们只需要学习id、class、xpath定位就可以完成定位元素的目的了。
8、而id值不是每个元素都会显示的,而resource-id可以查询到,但是在大多数时候resource-id是一系列元素的id,所以我们需要使用find_elements_by_id方法来查询id。
9、2 class定位class一般都不止一个,所以应该需要遍历一遍得到的元素,然后缩小搜索条件来获得蚕蝣鲢蹙目标元素。我们可以借助python中的pop()方法确定想要这一组元素中的第几个,并对它进行点击或输入操作。pop(0) 或pop(-1):默认获得一组元素中的最后一个。pop(n):获得一组元素中的第n-1个。一个class元素,使用find_element_by_class_name来查询。
10、如果class元素有很多,就可以使用find_elements_by_class_name来查询。
11、3 xpath在webdriver上xpath定位是功能强大的一种定位方式。我个人惯用于此方法来定位web页面上的元素。但是在android上要定位的是控件,而非页面元素,xpath定位的写法也会有所不同。
12、就目前而言吧,我觉得appium的xpath定位很不好使用,可能是因为还不够熟练的原因吧。