一、 Appium简介
Appium是一个开源工具,可用于在iOS、Android和Windows上实现本机、移动网络和混合应用程序的UI自动化测试,使用WebDriver协议驱动iOS,Android和Windows应用程序。
二、 Appium特点
- 开源免费。
- 跨平台:允许使用相同的API针对多个平台(iOS、Android、Windows)编写测试脚本。
- 支持多种类型:可以测试原生的、混合的、以及移动端的web项目。
- 支持多种编程语言:可以用任何编程语言编写的Appium客户端向Appium服务端发送HTTP请求。
三、 Appium架构组成
Appium使用的是C/S架构(客户端/服务器),主要由两部分组成:
- Appium客户端:编写的自动化脚本(支持多种语言,如:python、java等),使用JSON Wire协议与Appium服务端进行通信。
- Appium服务端:使用node.js编写的HTTP服务器,用于处理Appium客户端传送过来的指令。
四、 Appium相关组件
在介绍Appium工作原理前,让我们先来简单了解以下几个组件:
- UIAutomator:由谷歌推出的一款UI测试框架,提供API对Android系统进行一系列的自动化测试操作,Android 4.2之后系统自带的UI自动化测试工具。
- UIAutomation:由苹果公司发布的一个测试框架,主要用于自动化测试iOS和OS X应用的UI交互情况,iOS系统自带的UI自动化测试工具。
- Bootstrap.jar:Appium在Android上基于UIAutomator实现的测试代理程序,可以调用UIAutomator的方法实现一系列UI操作。
- Bootstrap.js:Appium在iOS上基于UIAutomation实现的测试代理程序,可以调用UIAutomation的方法实现一系列UI操作。
五、 UiAutomator APIs
UiAutomator对外提供了很多方法,便于UI自动化测试调用执行。
UiDevice 操作物理按键、拖拽,滑动,通知栏,截屏等,如pressHome,pressRecentApps,pressKeyCode,waitForIdle,drag,swipe,isScreenOn,openNotification,openQuickSetting等
UiSelector 可通过Text,description,class,package,index等属性定位。获取到的UiSelector可通过UiObject封装后进行操作
UiObject click,drag,swipe,setText,属性获取,是否存在等方法
UiCollection 是UiObject的子类,是控件的集合,如计算器是数字按键
UiScrollable 是UiObject的子类,滚动控件
六、 Bootstrap类的实现
package io.appium.android.bootstrap;
import io.appium.android.bootstrap.exceptions.SocketServerException;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;
/**
* The Bootstrap class runs the socket server. uiautomator开发的脚本,可以直接在pc端启动
*/
public class Bootstrap extends UiAutomatorTestCase {
public void testRunServer() {
SocketServer server;