九、Appium测试入门

移动端Appium使用

工具介绍

Appium是一个自动化测试开源工具,支持IOS和Android平台上的移动原生应用(指用IOS或者android sdk写的应用)、移动Web应用(指使用移动浏览器访问的应用,appium支持ios上的safari和android上的chrome)以及混合应用(指原生代码封装网页视图,原生代码和web内容交互)。Appium是一个跨平台的工具,允许使用不同的接口,基于不同的平台ios或android写自动化测试脚本。

设计理念

1.无需为自动化重新编译或修改应用 appium是第三方自动化框架(不需要在本身的应用里植入特定appium或者第三方代码),在测试将要发布的应用时会使用以下的第三方框架
IOS:苹果的UI Automation框架
Android 4.2+:google的UI Automator框架
Android 2.3+:google的Instrumentation框架
2.不必局限于某种语言或者框架来写运行测试脚本
appium把第三方框架封装成一套WebDriver API。WebDriver即Selenium WebDriver,指定了客户端到服务端的协议,借助这种客户端/服务端的架构,可以使用任何语言来编写客户端,向服务端发送恰当的http请求
3.一个移动自动化的框架不应该在接口上重复造轮子,接口应该统一 WebDriver已经成为web浏览器自动化的标准,也成了W3C标准。Appium只是扩充了WebDriver协议,在原有的基础上添加移动自动化相关的API方法。
4.开源

概念理解

C/S架构
即客户端/服务器架构。Appium的核心是一个web服务器,提供了一套REST接口。收到客户端的连接、监听命令,在移动设备上执行这些命令,然后将执行结果放在HTTP响应中返还给客户端。这种架构可以使用任何实现了客户端的语言来编写测试代码;可以把服务端放在不同的机器上;还可以只写测试代码,用法类似Sauce Labs的云服务来解释命令。
Session 自动化总是在一个Session的上下文中运行,客户端初始化一个和服务端交互的Session。
不同语言有不同实现方式,但是最终都是发送一个附有“desired capabilities”的JSON对象参数的POST请求“/session”给服务器,服务端就会开始一个自动化的Session,返回一个Session ID。客户端拿到这个ID之后就用这个ID发送后续的命令。
Desired Capabilities 即一些键值对的集合(如一个map或者hash)。客户端将键值对发给服务端,告诉服务端想要启动怎样的自动化session。根据不同capabilities参数,服务端会有不同的行为。
Appium Server Appium是用nodejs写的,可以用源码编译或者从NPM直接安装。Appium服务端有很多语言库Java、Ruby、Python、PHP、JavaScript和C#等。这些库都实现了appium对WebDriver协议的扩展。使用appium时只需要用这些库代替常规的WebDriver库即可。
appium.exe
Appium提供了GUI封装的appium server下载,它疯转了运行appium server的所有依赖元素。而且这个封装包含了一个inspector工具,可以用于检查应用界面元素层级。

区分RemoteWebDriver、AppiumDriver、AndroidDriver、IOSDriver

RemoteWebDriver 直接来自上游Selenium项目,是一个非常通用的驱动程序,其中初始化驱动程序实现向Selenium集线器发出网络请求以启动驱动程序会话。 由于Appium在客户端-服务器模型上运行,因此Appium使用它来初始化驱动程序会话。 但是不建议直接使用RemoteWebDriver,因为有其他可用的驱动程序提供附加功能。
AppiumDriver 继承自RemoteWebDriver类,但添加了一些附加功能,这些功能在通过Appium服务器进行的移动自动化测试的上下文中很有用。
AndroidDriver 继承自AppiumDriver,但添加了一些其他功能,这些功能在通过Appium在Android设备上进行移动自动化测试的上下文中很有用。 如果要在Android设备或Android模拟器上开始测试仅使用此驱动程序类
IOSDriver 继承自AppiumDriver,但添加了其他功能,这些功能在通过Appium在iOS设备上进行移动自动化测试的上下文中很有用。 如果要在iOS设备或iOS模拟器上开始测试请仅使用此驱动程序类。

工作原理

一、Android平台
基于WebDriver协议,利用Bootstrap.jar通过调用UIAutimator命令实现App自动化测试.UIAutomator框架是Android SDK自带的App UI自动化测试java库。但UiAutomator对H5的支持有限,appium引入chromedriver以及safaridriver等来实现基于H5的自动化。流程如下
1.client端(test script)是webdriver测试脚本
2.中间是appium 服务,appium server端是一个port为4723的服务,与selenium Webdriver框架类似。Appium支持标准的WebDriver JSONWireProtocol,提供了一套REST接口,Appium server接受web driver client标准的rest请求,解析请求内容,调用对应的框架响应操作
3.appium server会将请求转发给中间件Bootstrap.jar,将其安装在手机上Bootstrap监听4724端口并接收appium命令,最终通过调用UiAutomator的命令来实现。
4.Bootstrap将执行结果返回给appium server
5.appium server将结果返回给appium client

二、IOS平台
基于webdriver协议。封装apple的Instruments框架,主要用Instrument的UIAutomation(apple的自动化测试框架),然后在设备中注入bootstrap.js进行监听。流程如下
1.client端(test script)是webdriver测试脚本
2.中间是appium 服务,appium server端是一个port为4723的服务,与selenium Webdriver框架类似。Appium支持标准的WebDriver JSONWireProtocol,提供了一套REST接口,Appium server接受web driver client标准的rest请求,解析请求内容,调用对应的框架响应操作。
3.appium server调用instruments.js启动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值