新闻资讯
移动端上的UI自动化测试
Android:主要基于UIAutomator和UIAutomator2,更早的可以追溯到instrumentation框架。
(1)instrumentation可以把测试包和目标测试app加载到同一个进程中运行,以此实现对app的控制。
之后封装形成Selendroid架构
(2)UIAutomator是谷歌在Android4.1版本发布时推出的基于Java编写的UI测试框架,与Bootstrap配合使用。
其特点是可以跨进程操作,可以获取屏幕上任意一个app的任意一个控件属性并对其操作。
但不足的是只能用Java编写,且测试脚本必须上传到设备上运行。
(3)UIAutomator2修复了原有版本的bug,还增加了很多新功能
-
设备和开发机可以脱离数据线,通过WiFi互联(基于atx-agent)
-
集成了openstf/minicap达到实时屏幕投频,以及实时截图
-
集成了openstf/minitouch达到精确实时控制设备
-
修复了xiaocong/uiautomator经常性退出的问题
-
代码进行了重构和精简,方便维护
-
实现了一个设备管理平台(也支持iOS) atxserver2
IOS:主要基于UIAutomation,Xcode 7之后引入UITesting
(1)通过UIAutomation操作app时,UIAutomation会给app发送WM_GETOBJECT的消息
如果app处理WM_GETOBJECT消息,实现了UIAutomation Provider,并调用了下面的函数,则该app支持UiaReturnRawElementProvider(HWND hwnd, WPARAM wparam, LPARAM lparam, IRawElementProviderSimple *el)
IRawElementProviderSimple就是UIAutomation Provider,包含了控件的各种信息,如Name,ClassName,坐标等。
因此,app想要支持自动化,就必须实现UIAutomation Provider,详情请参看《UI Automation Client Programmer's Guide》
(2)UITesting是苹果公司推出,在Xcode 7引入的UI自动化测试框架,其原理利用了IOS的Accessibility
-
Xcode 自带,不需要搭建环境
-
支持 OC、Swift,学习成本低
-
支持 WebView 测试
-
稳定性好
回复列表