appium介绍

移动自动化测试工具appium。appium目前在移动UI自动化测试领域占有重要地位,不仅支持Android和IOS两大平台,还支持多种编程,因而得到广泛的应用。

移动应用类型

移动应用类型主要分为以下几类

  • Native App:原生应用。
  • Mobile Web App:移动Web应用。
  • Hybrid App:混合应用。
    图12-1 移动应用类型移动应用类型
  1. Native App
    Native App(原生应用)是为特定移动设备或平台开发的应用程序(如Android、iOS或Windows)。例如,iPhone应用程序是用Swift写的,Android应用程序是用Java写的。原生应用的可靠性极高,因为它们使用的是底层系统的架构和设备的内置功能。
  2. Mobile Web App
    Mobile Web App(移动应用)是通过移动浏览器访问的应用程序,可以通过内置浏览器轻松访问。例如,iOS上的Safari,Android上的Chrome。它们主要使用HTML5、JavaScript等技术开发,可以提供定制功能。Mobile Web App基本来自服务器,并且不能在设备的任何地方离线存储。
  3. Hybrid App
    Hybrid App(混合应用)主要使用网络技术(HTML5、CSS和JavaScript)开发,但嵌入在App中运行,从而感觉它像是原生应用程序。
    对于拥有网页的公司来说,混合应用最受青睐。这些公司通常将混合应用作为封装来构建网页。PhoneGap和Sencha Touch等工具可以为用户构建一个混合应用,混合应用可以通过各自的应用程序商店下载。

appium支持以上三种类型应用(Native App、Mobile Web App和Hybrid App)的自动化测试。

appium的架构

appium基于客户端/服务器架构。服务器执行给定顺序的动作:
(1)从客户端接收连接并启动会话。
(2)侦听发出的命令。
(3)执行这些命令。
(4)返回命令执行状态。
图12-2 appium工作方式appium工作方式

  1. XCUITest
    XCUITest是苹果公司于iOS9.3版本推出的自动化框架,从iOS 10开始,它是唯一的自动化框架。
    appium1.6.0使用苹果公司的XCUTest框架,它支持iOS IO/Xcode 8。appium内部使用Facebook公司的WebDriverAgent项目支持XCUTest。
    Facebook公司的WebDriverAgent项目是一个为iOS实现的WebDriver服务,用于对连接的设备或模拟器进行远程控制。通过它可以启动应用程序、执行命令(如点击、滚动)、或终止应用程序。对于较旧的iOS版本(9.3以下版本),appium使用Apple的UIAutomation库,典型用法是在所需功能中传递以下内容:
    automationName:XCUTest
    UIAutomation库与移动设备或模拟器内运行的bootstrap.js进行通信,执行由appium客户端收到的命令。
    图12-3 iOS平台工作方式iOS平台工作方式

  2. UIAutomator2
    UIAutomator2是基于Android的自动化框架,允许用户构建和运行UI测试。appium使用Google公司的UIAutomator2在真实设备或模拟器上执行命令。UIAutomator2是Google公司针对App设计的UI自动化测试框架。典型的用法是在所需的功能中传递以下内容:
    automationName:uiautomator2
    在appium1.6版本中,appium为UIAutomator2提供支持。appium使用appium-android-bootstrap模块与UIAutomator2进行交互。它允许将命令发送到设备,使用Android的UIAutomator2测试框架在真实设备上执行命令。
    当appium客户端请求创建新的AndroidDriver会话时,appium客户端会将所需的功能传递给appium节点服务器。首先,UIAutomator2驱动程序模块创建会话。然后,在连接的Android设备上安装UIAutomator2服务器apk。接着启动Netty服务器。在Netty服务启动后,UIAutomator2服务器在设备上侦听请求并做出响应。
    图12-4 Android平台工作方式Android平台工作方式
    注意:以上关于appium工作方式的介绍摘自appium essentials一书。

appium的工作过程

图12-5 appium的工作过程appium的工作过程

  1. appium Client
    appium Client支持多种语言/框架,它针对主流的编程语言分别开发了相应的appium测试库,我们可以选择自己熟悉的语言或框架来编写appium测试脚本。appium Client支持的语言/框架如表所示。
语言/框架 Github项目地址
ruby https://github.com/appium/ruby_lib
Python https://github.com/appium/python-client
Java https://github.com/appium/java-client
JavaScript(Node.js) https://github.com/admc/wd
Objective C https://github.com/appium-boneyard/selenium-objective-c
PHP https://github.com/appium-boneyard/php-client
C#(.NET) https://github.com/appium/appium-dotnet-driver
Robot Framework https://github.com/serhatbolsu/robotframework-appiumlibrary
  1. appium Server
    appium需要在PC上启动一个Server,监听客户端自动化测试的运行,并将请求发送到对应的移动设备或模拟器中运行。
    appium Server支持macOS和Windows两大平台。我们可以在不同的平台编写并运行appium自动化测试。需要特别说明的是,appium Server项目已经停止更新,由appium Desktop替代。

  2. 移动设备
    移动设备用于运行appium自动化测试的环境,既可以是一台连接到PC的手机,也可以是在PC上运行的iOS模拟器或Android模拟器。

posted @ 2021-05-22 12:44  心脏鼓点  阅读(583)  评论(0编辑  收藏  举报