写点什么

软件测试|App 自动化之 Appium 工作原理

  • 2023-09-15
    北京
  • 本文字数:1753 字

    阅读完需:约 6 分钟

问题

在工作中,使用什么进行的 App 端自动化?


有没有用到 Appium 这个框架?


对 Appium 熟悉吗?


Appium 底层原理是怎样驱动手机进行操作的?

考察点

面试官想了解:


  • 是否用过 Appium 框架

  • 对 Appium 框架的常用 API 是否熟悉

  • 移动端端特殊控件、特殊操作是否有解决方案

  • 是否看过 Appium 的源码

  • 是否了解 Appium 框架的底层工作原理

技术点

涉及的技术点:


  • Appium API

  • Appium 底层通讯协议

  • Appium 框架原理

回答

首先,对 Appium 框架进行介绍,说明对应框架的特性;再画出通信原理图进行解释说明;说明一下常用操作的 API;最后进行整体的总结。

Appium 框架介绍

Appium 是什么?


首先,Appium 是一款开源框架,生态丰富,社区强大,一直在被开发者维护;


并且是一个灵活的跨平台的测试自动化工具,可以在 iOS、Android 或 Windows、Mac 设备上进行移动应用的自动化测试运行,并且能够使用相同的 API 编写多个平台的测试脚本;


Appium 与 Selenium 类似,是一个跨语言的自动化框架,并且可以和任何测试框架相结合;可以使用不同的编程语言编写测试脚本,包括 Java、JavaScript、PHP、Ruby、Python 和 C#。

Appium 通信-各个端介绍

Client端发送自动化指令给 Appium Server ,Appium Server 接收到 Client 端发送的指令后,进行转换,转换为移动端能够识别的指令,然后发送给移动端设备,移动端设备根据指令进行操作。


如下图为自动化通信交互:


Client 端

Client 端 就是运行编写的自动化项目代码,使用 Appium-client 提供的 API 来进行用例的编写。其中,声明DesiredCapabilities对象,指定被测设备及 app 的相关信息;DesiredCapabilities对象中指定automationName的 value 值为UiAutomator2,这样才可以通过 Appium Server 去创建一个 Android 的 session 会话


自动化项目代码中首先请求创建一个 AndroidDriver 实例,需要传入Appium Server的 URL 及 DesiredCapabilities 对象

Appium Server

Appium Server 启动时默认的占用的端口号为 4723,主要作用就是进行 API 请求的监听。接收 Client 端发送的命令,并进行转换,转为移动端可识别的指令,并发送给移动端设备进行操作,再等待移动设备返回操作结果。Appium Server 端接收到移动设备返回的结果再将操作结果发送给 Client 端。


其中,Appium server 可以和自动化项目代码同时放在 Client 端,也可以放在云端。如果与代码同时放在 Client 端上,Appium Server 的 IP 地址为 127.0.0.1;如果放在云端,Appium Server 的 IP 地址为云端服务器的 IP 地址。

Android 移动端

Appium 基于 JSON Wire 协议,通过调用 UIAutomatior 命令,实现 APP 的自动化测试。其中,UIAutomator 测试框架是 Android SDK 自带的 APP UI 自动化测试 Java 库。

总结

客户端发送请求给 Appium Server,Appium Server 转换请求给移动端,在移动端操作完成后返回响应内容给 Appium Server,Appium Server 再把结果返回给客户端。

Appium 通信-端与端之间

Client 端与 Appium Server

客户端请求创建 driver 会话,将声明的 capabilities 启动参数通过端口 4723 传递给 Appium Server;


Appium Server 基于 capabilities 中的 automationName 属性,重定向到相应的驱动模块。如果 automationName 是 uiautomator2,Appium Server 重定向到 UIAutomator2 Driver,此时创建 session 会话并生成对应的 sessionID。

Appium Server 与 Android 移动端

APK 安装
  • appium settings


为了在 Android 手机上运行应用程序,Appium 需要有一定的权限来控制系统设置。Appium 安装了一个小应用程序 io.appium.settings,安装成功后,Appium Settings 在后台运行。


  • uiautomator2 server


由于使用的是 UIAutomator2 Driver,所以要在 Android 手机上安装 Driver 相关的 apk,即 appium-uiautomator2-server-xx.apk。


安装完成后,Appium Server 的 8200 端口 和 Android 设备端的 6790 端口建立映射,通过该映射的链路进行通讯。

总结


  1. Client端发送操作指令给Appium Server

  2. Appium Server通过appium-uiautomator2-driver发送JWP协议的请求到Androidappium-uiautomator2-server

  3. appium-uiautomator2-server调用Android系统的 Google UIAutomator2 去以执行自动化具体的操作

  4. 操作完成后返回结果对象AppiumResponseappium-uiautomator2-driverAppiumServer再返回给Client端,Client端得到最终执行操作的结果

注意

  • appium-uiautomator2driverserver之间的通信的协议是 JWP 协议

  • 创建AndroidDriver遵循的是W3C协议进行创建


获取更多技术资料,请点击!

用户头像

社区:ceshiren.com 微信:ceshiren2021 2019-10-23 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料,实时更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬。

评论

发布
暂无评论
软件测试|App自动化之Appium工作原理_霍格沃兹测试开发学社_InfoQ写作社区