腾讯优测是专业的移动自动化测试平台,提供全面兼容性测试,远程真机租用等多维度的测试服务,让测试更简单!
安卓平台上应用程序的遍历一直是研发工程师十分关注的问题,所以我在工做中也在不断地学习探索,目前处在探索的初期阶段。在我看来,遍历自动化的难点主要集中在如下两个方面:
1.在不知道控件属性的状况下,如何定位和识别控件
2.无特定业务逻辑的状况下,如何导航到目标控件
虽然难题在眼前,但我仍不知道遍历后能定位多少适配问题。发此文一是记录遍历开发过程细节点滴,二是与你们一同分享和探讨遍历技术。
遍历框架依托在appium基础上,我也是一个月前刚刚了解,喜欢它可使用任意的开发语言编写你的自动化代码,ruby,python,java,perl等等;最重要的是,它能够知足腾讯优测适配测试的需求。java
我在一开始的尝试不涉及任何业务逻辑,仅依托框架自动遍历全部clickables,但却遇到不少问题。node
框架的数据结构创建在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。python
*—-(python实现)
*递推调用find_my_nodes方法,获取当前activity的关联ativity,添加到grpah中,并绘制图片
导航到新的layout,序列化当前的clickable,做为两nodes的edge的key值,稍后调用能够实现点击跳转。
*序列化和反序列化clickable
目前正处在开发阶段,优化并未完成。android
这就是我对手机应用自动遍历实现的一点心得,但愿对你们的工做有所帮助。另外,若是看后有意见建议,能够经过下面的评论功能与我交流。
_
腾讯优测是专业的移动云测试平台,为应用、游戏、H5混合应用的研发团队提供产品质量检测与问题解决服务。不只在线上平台提供自动化兼容性测试、云手机远程租用与调试、漏洞分析、自动化测试工具Xtest等多种质量检测工具,更为VIP客户配备了专家团队提供定制化综合测试解决方案。ios