(转)appium

原文:https://qaseven.github.io/2016/05/05/appium/

appium 介绍

Appium 是一个开源的,跨平台的自动化测试工具。 它支持模拟器(iOS,FirefoxOS,Android)和真机(iOS, Android, FirefoxOS)上的原生应用,混合应用和移动 web 应用。

appium 工作原理

 

 

Android

在Android端,appium基于WebDriver协议,利用Bootstrap.jar,最后通过调⽤用UiAutomator的命令,实现App的自动化测试。

UiAutomator测试框架是Android SDK自带的App UI自动化测试Java库。

另外由于UiAutomator对H5的支持有限,appium引入了chromedriver以及safaridriver等来实现基于H5的自动化。

appium 在android端工作流

1.      client端也就是我们 test script是我们的webdriver测试脚本。

2.      中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架类似, Appium⽀持标准的WebDriver JSONWireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调⽤用对应的框架响应操作。

3.      appium server会把请求转发给中间件Bootstrap.jar ,它是用java写的,安装在手机上.Bootstrap监听4724端口并接收appium 的命令,最终通过调⽤用UiAutomator的命令来实现。

4.      最后Bootstrap将执行的结果返回给appium server。

5.      appium server再将结果返回给 appium client。

ios

在IOS端,appium同样使⽤WebDriver的一套协议。

与Android端测试框架不同的是,appium ios封装了apple的 Instruments框架,主要用了Instrument里的UI Automation(Apple的自动化测试框架),然后在设备中注入bootstrap.js进行监听。

appium 在ios端工作流

1.      client端 依然是 test script是我们的webdriver测试脚本。

2.      中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架类似, Appium持标准的WebDriver JSONWireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调用对应的框架响应操作。

3.      appium server调用instruments.js 启动一个socket server,同时分出一个子进程运instruments.app,将bootstrap.js(一个UIAutomation脚本)注入到device于和外界进行交互

4.      最后Bootstrap.js将执行的结果返回给appium server

5.      appium server再将结果返回给 appium client。

所以我们可以看到android与ios区别在于appium 将请求转发到bootstrap.js或者bootstrap.jar.然后由bootstrap 驱动UIAutomation和UiAutomator去devices上完成具体的动作。

appium 并发

 

 

关于appium并发,我将之分为2类,第一类单机并发。第二类基于selenium grid 多节点并发测试,也可称之为云测。

appium 单机并发

Android并发测试

Appium提供了在一台设备上启动多个Android会话的方案。

appium -p 4492 -bp 2251 -U 32456

启动多个Android会话的重要指令包括:

指令         功能

-p      Appium的主要端口

-U     设备id

-bp   Appium bootstrap端口

–chromedriver-port       chromedriver端口(当使用了webviews或者chrome)

–selendroid-port    selendroid端口(当使用了selendroid)

iOS并发测试

不幸的是,IOS不能进行本地并发测试。跟Android不一样,IOS在同一时间只能启动一个版本的模拟器来运行多个测试。

总结:

单机并发目前只能在android实现,且必须启动n个appium server 对应不同devices,这里devices可以是真机或模拟器。但是必须保证端口后没有重复使用。

接下来工作就是利用测试框架(testng,jasmine,rspec,cucumber等)将测试分发到不同appium server上。

posted @ 2017-07-03 14:12  hellowcf  阅读(349)  评论(0编辑  收藏  举报