用途和特点

Appium 是一个移动 App (手机应用)自动化工具。

手机APP 自动化有什么用?

  • 自动化完成一些重复性的任务
    比如微信客服机器人
  • 爬虫
    就是通过手机自动化爬取信息。
    为什么不通过网页、HTTP 爬取呢?有的系统没有网页,也不方便通过HTTP爬取
  • 自动化测试
    很多企业里面有这样的需求

Appium 自动化方案的特点:

  • 开源免费
  • 支持多个平台
    iOS (苹果)、安卓 App 的自动化都支持。
  • 支持多种类型的自动化
    支持 苹果、安卓 应用 原生界面 的自动化
    支持 应用 内嵌 WebView 的自动化
    支持 手机浏览器 中的 web网站自动化
    支持 flutter 应用的自动化
  • 支持多种编程语言
    像 Selenium 一样, 可以用多种编程语言 调用它 开发自动化程序。

 

自动化原理

我们先来看一下Appium自动化的原理图

python ios 自动化 python 手机app自动化_Selenium

 

 和Selenium 原理图很像。因为 Appium自动化架构就是借鉴的Selenium。

包含了 3个主体部分 : 自动化程序、Appium Server、移动设备

  • 自动化程序
    自动化程序是由我们来开发的,实现具体的 手机自动化 功能。
    要发出具体的指令控制手机,也需要使用 客户端库。
    和Selenium一样,Appium 组织 也提供了多种编程语言的客户端库,包括 java,python,js, ruby等,方便不同编程语言的开发者使用。
    我们需要安装好客户端库,调用这些库,就可以发出自动化指令给手机。
  • Appium Server

Appium Server 是 Appium 组织开发的程序,它负责管理手机自动化环境,并且转发 自动化程序的控制指令 给 手机,并且转发 手机给 自动化程序的响应消息。

  • 手机设备
    我们这里说的手机设备,其实不仅仅是手机,包括所有 苹果、安卓的移动设备,比如:手机、平板、智能手表等。
    为了直观方便的讲解,这里我们简称: 手机
    当然手机上也包含了 我们要自动化控制的 手机应用APP。
    手机设备为什么能 接收并且处理自动化指令呢?
    因为,Appium Server 会在手机上 安装一个 自动化代理程序, 代理程序会等待自动化指令,并且执行自动化指令

比如:要模拟用户点击界面按钮,Appium 自动化系统的流程是这样的:

  • 自动化程序 调用客户端库相应的函数, 发送 点击元素 的指令(封装在HTTP消息里)给 Appium Server
  • Appium Server 再转发这个指令给 手机上的自动化代理
  • 手机上的自动化代理 接收到 指令后,调用手机平台的自动化库,执行点击操作,返回点击成功的结果给 Appium Server
  • Appium Server 转发给 自动化程序
  • 自动化程序了解到本操作成功后,继续后面的自动化流程

其中,自动化代理控制,使用的什么库来实现自动化的呢?

如果测试的是苹果手机, 用的是苹果的 XCUITest 框架 (IOS9.3版本以后)

如果测试的是安卓手机,用的是安卓的 UIAutomator 框架 (Android4.2以后)

这些自动化框架提供了在手机设备上运行的库,可以让程序调用这些库,像人一样自动化操控设备和APP,比如:点击、滑动,模拟各种按键消息等。