基于Appium的Android自动化测试(一)

本文章转载于搜狗测试

基于Appium的Android自动化测试(一)

项目技术结构:Java + Appium + TestNG + Maven

Appium

Appium是一个开源、跨平台的自动化测试工具,用于测试原生和轻量移动应用,支持iOS,Android和FirefoxOS平台。Appium驱动Android的UiAutomator框架,使用Selenium的WebDriver JSON协议。

相比其他的移动自动化测试工具,Appium测试由于调用了Selenium的client库使其可以使用任意的语言,包括Python、Ruby、Node.js、Objective-C等。

基于Appium的Android自动化测试(一)_第1张图片

Appium——C/S构架

Appium的核心是一个web服务器,提供了一套REST接口。它收到客户端的连接,监听到命令,接着在移动设备上执行这些命令,然后将执行结果放在HTTP响应中返还给客户端。特点:多语言编写测试代码;可以将服务器放在不同的机器上;

在这里client其实就是发起command的设备,一般来说就是我们代码执行的机器,执行appium测试代码的机器。只要client能够发送http请求给server,只要它实现了webdriver标准协议就可以,故appium及webdriver可以支持多语言。

基于Appium的Android自动化测试(一)_第2张图片

server的功能:监听一个端口,然后接收由client发送来的command,解释这些command,把这些command转成移动设备可以理解的形式发送给移动设备,然后移动设备执行完这些command后把执行结果返回给appium server,appium server再把执行结果返回给client。

Session

session是一个会话,自动化总在一个session的上下文中运行。在webdriver/appium,所有工作永远都是在session start后才可以进行的。客户端初始化一个seesion(会话)来与服务端交互。不同语言有不同的实现方式,但最终都是发送为一个“desired capabilities”的JSON对象参数的POST请求”/session”给服务器,然后传入Desired Capabilities,服务器会开始一个自动化的session,然后返回一个全局唯一的sessionID。以后几乎所有的请求都必须带上这个session id,因为这个seesion id代表了你所打开的浏览器或者是移动设备的模拟器。

Desired Capabilities

是一些key-value(键值对)的集合(比如map或者hash)。可理解成是java里的map,python里的字典,ruby里的hash以及js里的json对象。实际上Desired Capabilities在传输时就是json对象。

Desired Capabilities最重要的作用是告诉server本次测试的上下文。客户端将这些键值对发给服务端,告诉服务端我们想要启动怎样的自动化session。根据不同的capabilities 参数,服务端会有不同的行为。

举个栗子

capabilities.setCapability("platformName capability","Android");

capabilities.setCapability("platformVersion","4.3");

capabilities.setCapability("appPackage","com.sogou.map.android.maps");

capabilities.setCapability("appActivity",".MainActivity");

platformName capability 设置为Android,要启动一个Android的session;本次测试是启动andorid移动设备;app的package是com.sogou.map.android.maps;启动android时,app的activity是MainActivity

Appium真正的工作引擎是第三方自动化框架,Android使用的第三方框架:为UiAutomator(Android 4.2+)。借助第三方框架,建立了服务器和设备之间的连接。

API Level对应关系如下:

平台版本

API级别

Android 7.1

25

Android  7.0

24

Android  6.0

23

Android  5.1

22

Android  5.0

21

Android 4.4W

20

Android  4.4

19

Android  4.3

18

不同版本,通过UiAutomator可以获取设备属性不同(例如:Android4.3以上版本支持source-Id,之前的版本不支持此字段,即API Level大于或者等于18才能够获取)。

你可能感兴趣的:(基于Appium的Android自动化测试(一))