Appium自动化工作原理(UiAutomator)
Appium是一个开源的、跨平台的自动化测试工具,专注于移动应用(iOS和Android)的自动化测试。它基于WebDriver协议,并扩展了移动设备特有的API。对于Android平台,Appium主要依赖于UiAutomator(4.2及以上版本)和Instrumentation(4.2以下版本)来实现自动化操作。以下是Appium自动化工作原理的详细解析,特别是与UiAutomator相关的部分。
一、Appium加载过程Appium的加载过程涉及多个组件和端口的交互。以下是主要步骤:
- WebDriver脚本:测试人员编写的测试脚本,可以是Java或Python等语言。
- Appium Server:Appium启动时会创建一个监听4723端口的Server,接收测试脚本发送过来的请求。
- Bootstrap.jar:Appium Server将请求转发给Bootstrap.jar,该jar包监听4724端口,并将请求转换成UiAutomator可以识别的命令。
图解:
二、Appium工作过程Appium的工作过程基于C/S(客户端/服务器)模式,主要步骤如下:
- 客户端发送请求:测试脚本通过HTTP协议向Appium Server发送请求。
- Appium Server处理请求:Appium Server接收请求后,根据请求内容(如点击、滑动等)进行解析。
- 转发请求给Bootstrap:Appium Server将解析后的请求转发给Bootstrap.jar,该jar包运行在Android设备上。
- Bootstrap转换命令:Bootstrap.jar将接收到的请求转换成UiAutomator可以识别的命令。
- UiAutomator执行命令:UiAutomator根据转换后的命令在Android设备上执行相应的操作。
- 返回结果:操作完成后,UiAutomator将结果返回给Bootstrap.jar,Bootstrap.jar再将结果返回给Appium Server,最终由Appium Server返回给测试脚本。
三、Bootstrap的作用与角色Bootstrap在Appium自动化测试过程中扮演着至关重要的角色:
- 作用:Bootstrap是Appium在初始化时推送到安卓手机上的一个UiAutomator测试脚本。它开启一个SocketServer(通信模块),监听Appium从PC端过来的命令,并发送给UiAutomator执行处理。
- 角色:
UiAutomator测试脚本:Bootstrap继承于UiautomatorTestCase,可以正常使用UiAutomator的方法。
Socket服务器:监听4724端口,接收Appium Server发送的命令数据,并将其转换成UiAutomator的命令。
处理PC端命令:Bootstrap处理的是从PC端过来的命令,而非一个文件。
四、技术栈Appium自动化测试技术栈主要包括:
- Android:使用instrumentation(4.2以下)和UiAutomator(4.2及以上)两套技术。
- iOS:使用UiAutomation。
- 其他平台:支持Firefox,并可扩展其他平台。
五、CapabilitiesCapabilities是由客户端发送给Appium服务器端的键值对集合,用于告诉服务器启动哪种会话以及修改自动化过程中的行为方式。
六、自我理解的工作原理Appium自动化测试的工作原理可以概括为以下几个步骤:
- 启动Appium Server:创建一个监听4723端口的HTTP服务端。
- 脚本发送请求:测试脚本通过HTTP协议向Appium Server发送请求。
- Server与设备通讯:Appium Server通过4724端口与Android设备上的Bootstrap.jar进行通讯。
- Bootstrap转换并执行命令:Bootstrap将接收到的请求转换成UiAutomator命令并执行。
- 返回结果:操作完成后,结果通过Bootstrap返回给Appium Server,再由Appium Server返回给测试脚本。
总结:
Appium自动化测试工作原理的核心在于其C/S架构和与UiAutomator的紧密集成。通过监听特定端口、转发请求、转换命令和执行操作等步骤,Appium实现了对Android和iOS移动应用的自动化测试。对于Android平台,UiAutomator作为底层执行引擎,为Appium提供了强大的自动化操作能力。