移动自动化测试工具appium。appium目前在移动UI自动化测试领域占有重要地位,不仅支持Android和IOS两大平台,还支持多种编程,因而得到广泛的应用。
移动应用类型
移动应用类型主要分为以下几类
- Native App:原生应用。
- Mobile Web App:移动Web应用。
- Hybrid App:混合应用。
移动应用类型
- Native App
Native App(原生应用)是为特定移动设备或平台开发的应用程序(如Android、iOS或Windows)。例如,iPhone应用程序是用Swift写的,Android应用程序是用Java写的。原生应用的可靠性极高,因为它们使用的是底层系统的架构和设备的内置功能。 - Mobile Web App
Mobile Web App(移动应用)是通过移动浏览器访问的应用程序,可以通过内置浏览器轻松访问。例如,iOS上的Safari,Android上的Chrome。它们主要使用HTML5、JavaScript等技术开发,可以提供定制功能。Mobile Web App基本来自服务器,并且不能在设备的任何地方离线存储。 - 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)返回命令执行状态。
appium工作方式
-
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客户端收到的命令。
iOS平台工作方式 -
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服务器在设备上侦听请求并做出响应。
Android平台工作方式
注意:以上关于appium工作方式的介绍摘自appium essentials一书。
appium的工作过程
appium的工作过程
- 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 |
-
appium Server
appium需要在PC上启动一个Server,监听客户端自动化测试的运行,并将请求发送到对应的移动设备或模拟器中运行。
appium Server支持macOS和Windows两大平台。我们可以在不同的平台编写并运行appium自动化测试。需要特别说明的是,appium Server项目已经停止更新,由appium Desktop替代。 -
移动设备
移动设备用于运行appium自动化测试的环境,既可以是一台连接到PC的手机,也可以是在PC上运行的iOS模拟器或Android模拟器。