了解appium自动化的工作原理(uiautomator)

了解appium自动化的工作原理(uiautomator)
最新回答
凉秋瑾言

2022-11-20 11:18:01

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(客户端/服务器)模式,主要步骤如下:

  1. 客户端发送请求:测试脚本通过HTTP协议向Appium Server发送请求。
  2. Appium Server处理请求:Appium Server接收请求后,根据请求内容(如点击、滑动等)进行解析。
  3. 转发请求给Bootstrap:Appium Server将解析后的请求转发给Bootstrap.jar,该jar包运行在Android设备上。
  4. Bootstrap转换命令:Bootstrap.jar将接收到的请求转换成UiAutomator可以识别的命令。
  5. UiAutomator执行命令:UiAutomator根据转换后的命令在Android设备上执行相应的操作。
  6. 返回结果:操作完成后,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,并可扩展其他平台。
五、Capabilities

Capabilities是由客户端发送给Appium服务器端的键值对集合,用于告诉服务器启动哪种会话以及修改自动化过程中的行为方式。

六、自我理解的工作原理

Appium自动化测试的工作原理可以概括为以下几个步骤:

  1. 启动Appium Server:创建一个监听4723端口的HTTP服务端。
  2. 脚本发送请求:测试脚本通过HTTP协议向Appium Server发送请求。
  3. Server与设备通讯:Appium Server通过4724端口与Android设备上的Bootstrap.jar进行通讯。
  4. Bootstrap转换并执行命令:Bootstrap将接收到的请求转换成UiAutomator命令并执行。
  5. 返回结果:操作完成后,结果通过Bootstrap返回给Appium Server,再由Appium Server返回给测试脚本。

总结

Appium自动化测试工作原理的核心在于其C/S架构和与UiAutomator的紧密集成。通过监听特定端口、转发请求、转换命令和执行操作等步骤,Appium实现了对Android和iOS移动应用的自动化测试。对于Android平台,UiAutomator作为底层执行引擎,为Appium提供了强大的自动化操作能力。