新的获取APP元素定位方法的实践——不依赖GUI工具

获取元素定位方式,是UI自动化测试过程中最重要的一步,如果无法获取有效的定位方式,其它操作将无从进行。

通常在使用Appium框架进行自动化测试时,我们依赖GUI工具Appium Inspector、UIAutomatorViewer来获取元素属性,经过分析验证,从而得到正确的定位方式。

使用GUI工具获取元素定位

美好的想法

安装Appium环境,并能正常运行demo;

安装appium GUI客户端;

使用Appium Inspector或者UIAutomatorViewer获取Android版本App元素属性;

使用Appium Inspector获取IOS版本App 元素属性;

分析元素属性,得到定位方式;

将定位方式添加到测试脚本,运行测试。

如果一切顺利,重复以上过程,元素定位自然不是问题。然而,理想很丰满,现实很骨感,过程往往是非常痛苦的。

痛苦的过程

(安装过程的痛处,不是本文重点,在这就不多说了)

用Appium Inspector在真机上运行并定位元素的时候,不管App有没有安装,都会重新安装,而Appium安装启动App的过程是非常耗时的;

使用Linux系统开发时,由于Appium Inspector无Linux版本,只能通过UIAutomatorViewer工具来获取Android页面元素属性,然而,有的元素就是那么任性:期望的属性都没有!想通过name和id定位是行不通了。

新的获取APP元素定位方法的实践——不依赖GUI工具_第1张图片

有的元素是有text和id属性的,不过中文汉字显示成了“?”

新的获取APP元素定位方法的实践——不依赖GUI工具_第2张图片

这样的话,需要先解决了这个编码问题。

打开Appium Inspector,无奈报错“Could Not Launch Appium Inspector”,经过检查,app path以及关键参数已经设置,还是无法打开。所以想要通过Appium Inspector获取元素属性,只能上网搜索一番,先解决了这个问题。

新的获取APP元素定位方法的实践——不依赖GUI工具_第3张图片

在解决了Appium Inspector无法启动问题以及UIAutomatorViewer编码问题后,对于既没有name,也没有ID属性的元素,只能通过分析,得到xpath,添加进脚本试用,确认定位信息是否准确。而这时,就不可避免的遇到NoSuchElement错误。

如果通过分析元素属性得到的xpath无法准确定位,只能采用万能的page source方法,根据source继续分析,得到定位方式,再来验证。

@property

defpage_source(self):

"""

Gets the source of the current page.

:Usage:

driver.page_source

"""returnself.execute(Command.GET_PAGE_SOURCE)['value']

以上列举了一些使用GUI工具Appium Inspector和UIAutomatorViewer获取元素定位方法的一些问题,虽说问题都能一一被解决,但花费的时间以及不断重复获取精确定位的过程,让人不能忍,如果有人真不幸的一一遇到了,那么使用新的方法来获取定位方式,便迫在眉睫了。

新方法的实践

1、期望的获取方式

在App指定的界面,解析页面并获取所有元素的定位方式

对分析到的元素定位方式进行验证

确认定位信息无误后添加进自动化脚本中

2、解决思路

配置Desired Capabilities,并启动Appium Server

运行App并调整到指定界面

通过source = driver.page_source获取页面source

分析页面source,得到该页面所有元素的定位方法,可根据ID>name>text>xpath的顺序

指定得到的定位元素方式,执行click操作,观察交互是否正确

将正确的定位方式添加进测试脚本

3、如何实现(主要代码)

如何解析source

新的获取APP元素定位方法的实践——不依赖GUI工具_第4张图片

Android也是同样的思路,直接获取属性clickable为True的元素。

对得到的定位方式进行验证

新的获取APP元素定位方法的实践——不依赖GUI工具_第5张图片

4、以demo为例说明

打开app后界面

新的获取APP元素定位方法的实践——不依赖GUI工具_第6张图片

根据分析得到的定位方式

新的获取APP元素定位方法的实践——不依赖GUI工具_第7张图片

选择11,验证定位信息是否正确

执行click操作,跳转到buttons页面,说明定位信息准确,可添加进脚本

新的获取APP元素定位方法的实践——不依赖GUI工具_第8张图片

5、该方法解决的主要问题

Appium Inspector以及UIAutimatorViewer工具,因环境问题带来的困扰;

UIAutimatorViewer无法直接获取xpath的不足;

获取定位方式后可以直接判断是否准确。

6、该方法带来的几个主要问题以及改善

以上是通过xpath得到的定位信息,可以根据需要进行修改,建议ID优先;

对于无明显特征的定位信息,无法判断属于页面哪个元素,需要根据元素类型如button或者页面元素显示顺序,来猜测是哪个元素。如果能与开发约定元素id,相信获取元素定位,将事半功倍。

小结

以上主要根据使用工具获取元素定位方式的各种痛处,探索了一种新的获取元素定位的思路,希望能通过对该思路不断的优化、改进和完善,解决获取定位的烦恼,从而高效的完成自动化测试工作。

本文作者:李吉兵(点融黑帮),现任点融网测试开发工程师,主要从事App自动化测试,测试框架以及工具开发工作。

你可能感兴趣的:(新的获取APP元素定位方法的实践——不依赖GUI工具)