腾讯优测优分享 | 让你头疼的手机应用自动遍历可以这样实现

腾讯优测是专业的移动自动化测试平台,提供全面兼容性测试,远程真机租用等多维度的测试服务,让测试更简单!
安卓平台上应用程序的遍历一直是研发工程师十分关注的问题,因此我在工作中也在不断地学习探索,目前处在探索的初期阶段。在我看来,遍历自动化的难点主要集中在以下两个方面:
1.在不知道控件属性的情况下,如何定位和识别控件
2.无特定业务逻辑的情况下,如何导航到目标控件
虽然难题在眼前,但我仍不知道遍历后能定位多少适配问题。发此文一是记录遍历开发过程细节点滴,二是与大家一同分享和探讨遍历技术。
遍历框架依托在appium基础上,我也是一个月前刚刚了解,喜欢它可以使用任意的开发语言编写你的自动化代码,ruby,python,java,perl等等;最重要的是,它可以满足腾讯优测适配测试的需求。

我遍历的前期工作主要是解决基本需求-——遍历所有用户界面,甚至所有可点击控件

我在一开始的尝试不涉及任何业务逻辑,仅依托框架自动遍历所有clickables,但却遇到很多问题。

通过摸索,我找到了最终的成型方案——半业务逻辑半自由遍历。

框架的数据结构建立在graph模型上,将应用的每个activity抽象为graph的节点,每个activity之间的跳转关联抽象为edge,并且实现定义graph为方向矢量图。之所以这么做主要是为了实现导航,通过graph的边遍历实现activity的遍历,自增长模式的graph在遍历每个clickable时会形成新的node和edge,新的node和edge会完成递归,并统一由graph管理。
半业务逻辑是指首先需要定义好应用中的activity.layout,多个layout的会导致clickable的点击失败,在未找到更好的解决方案之前,采取预先定义的方案。
clickables是通过标准3c协议获得的手机可点击控件。之所以说通过标准3c协议,主要是因为用到了webdriver,它支持xpath,通过xpath获取到了当前页面所有可点击控件,在此我为了提高性能,对clickables进行了一次过滤,去除了重复位置和focusable为true的控件。
遍历的“引擎”能够帮助我实现模拟用户点击,通过上面的clickables点击进入不同的页面(activity和layout)或者仅仅是改变了当前的page-source。

弄点干货吧,贴代码,只想告诉大家,appium可以做遍历,可以做跨平台适配(android&ios)

*—-(python实现)
*递推调用find_my_nodes方法,获取当前activity的关联ativity,添加到grpah中,并绘制图片
 

导航到新的layout,序列化当前的clickable,作为两nodes的edge的key值,稍后调用可以实现点击跳转。

*序列化和反序列化clickable

目前正处在开发阶段,优化并未完成。

自生长模式的遍历最终会得到一个png,代表当前遍历过的所有activity,支持节点完整性的对比。


这就是我对手机应用自动遍历实现的一点心得,希望对大家的工作有所帮助。另外,如果看后有意见建议,可以通过下面的评论功能与我交流。


腾讯优测是专业的移动云测试平台,为应用、游戏、H5混合应用的研发团队提供产品质量检测与问题解决服务。不仅在线上平台提供自动化兼容性测试、云手机远程租用与调试、漏洞分析、自动化测试工具Xtest等多种质量检测工具,更为VIP客户配备了专家团队提供定制化综合测试解决方案。

原文地址:https://www.cnblogs.com/utest/p/5866318.html