f6817febece7644374035e65542a1a40.png

基于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等。

4d630fd514c044c83b3d6819335b2bd7.png

Appium——C/S构架

Appium的核心是一个web服务器,提供了一套REST接口。它收到客户端的连接,监听到命令,接着在移动设备上执行这些命令,然后将执行结果放在HTTP响应中返还给客户端。特点:多语言编写测试代码;可以将服务器放在不同的机器上; 在这里client其实就是发起command的设备,一般来说就是我们代码执行的机器,执行appium测试代码的机器。只要client能够发送http请求给server,只要它实现了webdriver标准协议就可以,故appium及webdriver可以支持多语言。

38940b362394c130c696fd769ce37af9.png

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对应关系如下:

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

下期预告

1.TestNG 2.基于Appium 进行Android自动化测试遇到的问题

d80751e6ed6d947a1e03c92b94c58588.png

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐