关闭

App自动化之Appium工作原理!

发表于:2023-10-08 09:19

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:程序员小濠    来源:知乎

  Appium框架介绍
  Appium是什么?
  首先,Appium 是一款开源框架,生态丰富,社区强大,一直在被开发者维护;
  并且是一个灵活的跨平台的测试自动化工具,可以在iOS、AndroidWindows、Mac 设备上进行移动应用的自动化测试运行,并且能够使用相同的 API 编写多个平台的测试脚本;
  Appium与Selenium类似,是一个跨语言的自动化框架,并且可以和任何测试框架相结合;可以使用不同的编程语言编写测试脚本,包括 Java、JavaScript、PHP、RubyPython 和 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协议的请求到Android的appium-uiautomator2-server
  3. appium-uiautomator2-server调用Android系统的 Google UIAutomator2 去以执行自动化具体的操作
  4. 操作完成后返回结果对象AppiumResponse给appium-uiautomator2-driver,AppiumServer再返回给Client端,Client端得到最终执行操作的结果
  注意
  · appium-uiautomator2的driver和server之间的通信的协议是JWP协议
  · 创建AndroidDriver遵循的是W3C协议进行创建
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号