移动端自动化测试之Appium的工作原理学习
Appium 简介
参考官网文档说明:http://appium.io/docs/en/about-appium/intro/
Appium官方文档上介绍,Appium 是一个自动化测试的开源工具,支持 iOS 平台和 Android 平台上的原生应用,web 应用和混合应用。
“原生应用”是指那些用 iOS 或者 Android SDK 写的应用。
“web 应用”是指使用移动浏览器访问的应用(Appium 支持 iOS 上的 Safari 和 Android 上的 Chrome)。
“混合应用”是指原生代码封装网页视图——原生代码和 web 内容交互。比如,我们在微信里可以查看网页,可以通过网页应用买电影票等。
重要的是,Appium 是一个跨平台的工具:它允许测试人员在不同的平台(iOS,Android)使用同一套API来写自动化测试脚本,这样大大增加了 iOS 和 Android 测试套件间代码的复用性。
Appium设计
Appium通过使用iOS和Android等供应商自己提供的自动化框架来满足自动化测试的要求。这样,用户就无需在应用程序中使用任何特定于Appium或第三方的代码或框架进行编译。Appium使用的供应商提供的框架是:
- iOS 9.3及更高版本:Apple的XCUITest
- iOS 9.3及更低版本:Apple的UIAutomation
- Android 4.2以上版本:Google的UiAutomator / UiAutomator2
- Android 2.3以上版本:Google的Instrumentation。(仪器支持通过捆绑一个单独的项目Selendroid来提供)
- Windows:Microsoft的WinAppDriver
通过将供应商提供的框架包装在一个API(WebDriver API)中,WebDriver(又名“ Selenium WebDriver”)指定客户端-服务器协议(称为JSON Wire Protocol)。在这种客户端-服务器体系结构的情况下,可以使用以任何语言编写的客户端将适当的HTTP请求发送到服务器。已经有使用各种流行编程语言编写的客户端。这也意味着用户可以自由使用所需的任何测试运行器和测试框架。客户端库只是HTTP客户端,可以根据需要将其混合到用户的代码中。换句话说,Appium&WebDriver客户端在技术上不是“测试框架”,而是“自动化库”。我们可以按照自己喜欢的任何方式管理测试环境!
Appium工作原理
Android端:
appium是基于WebDriver协议的,利用Bootstrap.jar调用google公布的android的自动化测试框架Uiautomator的命令,在安卓手机或者模拟器上通过UiAutomator的命令,实现我们的App自动化测试。
Bootstrap是Appium运行在安卓目标测试机上的一个UiAutomator测试脚本,该脚本在目标机器上开启一个socket服务器把一个session中的Appium从PC端过来的命令发送给UiAutomator来执行处理,Bootstrap将执行的结果返回给appium server,appium server再将结果返回给 appium client。
UiAutomator测试框架是Android SDK自带的App UI自动化测试Java库。但是由于UiAutomator对H5的支持有限,所以引入了chromedriver来实现基于H5的自动化。

iOS端:
iOS和Android的工作原理其实差不多,只是他们支持的工具不一样,appium ios封装了苹果的Instruments框架,使用的是instruments下面的UIAutomation,首先client发送脚本请求,再到appium服务,这里appium会调用instruments去启动一个server,然后在设备中注⼊入bootstrap.js进⾏行监听。

Client/Server体系结构
Appium的核心是公开REST API的Web服务器。它从客户端接收连接,侦听命令,在移动设备上执行这些命令,然后移动设备将执行完的结果返回给appium server,appium server再把执行结果返回给client。
Session会话
自动化始终在会话的上下文中执行。客户端以特定于每个库的方式启动与服务器的会话,通过一个POST /session称为“所需功能”对象的JSON对象向服务器发送请求,传入Desired Capabilities就可以启动session了,此时,服务器将启动自动化会话并以会话ID进行响应,该会话ID用于发送其他命令。
不错的Appium学习资料:
Appium官网:http://appium.io/
Appium Girls 学习手册:https://anikikun.gitbooks.io/appium-girls-tutorial/content/
移动端自动化测试之Appium的工作原理学习的更多相关文章
- 移动端自动化测试之Appium实战
软件工程的趋势:目前大部分企业的软件研发模式是持续交付,而自动化是持续交付的根基,而且不仅仅是测试要自动化,所有的环节都在自动化,自动化是未来的方向这一点已成为行业共识. 之前咱们已经讲过了AppCr ...
- 移动端自动化测试之adb常用命令
今天我们来聊聊自动化测试过程中常用的adb命令. 简介 首先介绍下什么是adb,adb全称叫“android debug bridge”,翻译过来就叫调试桥,通过命令行指令,可让你与移动端设备进行相互 ...
- 移动端自动化测试之android模拟器问题集合
黑屏 在做移动端自动化测试过程中,android模拟器启动黑屏的问题一直困扰着我,网上找了许多方法尝试了都不能解决我的问题,最后重新安装了镜像文件,问题才得以解决,当然并不是网上的解决办法都是错的,只 ...
- Tomcat内部结构及工作原理学习
Tomcat原本是Servlet/JSP的一个调试工具,后来才发展为一个Servlet/JSP的容器. Tomcat作为Servlet容器,负责处理客户请求,把请求传送给Servlet并把结果返回给客 ...
- Appium移动端自动化测试之应用操作详解(四)
应用操作篇 1.1).安装应用 desired_caps = { 'platformName': 'Android', 'platformVersion': '5.0.0.0', 'deviceNam ...
- Appium移动端自动化测试之元素定位(三)
1.name定位 driver.find_element_by_id(') driver.find_element_by_id(') driver.find_element_by_name('登录') ...
- Appium自动化测试之Appium的安装与配置
Appium自动化测试- Appium环境的安装与配置Appium中文文档: https://github.com/appium/appium/tree/master/docs/cn Appium的安 ...
- Appium的工作原理
把我们写的python语言代码,看做客户端 通过客户端向appium服务器发送请求 appium服务器把我们的代码转换成手机可以识别的指令 然后把指令发给手机,手机根据指令做出相应的操作 最后手机把操 ...
- python自动化测试之appium环境安装
1.安装client pip install Appium-Python-Clinet 若有两个版本的python则使用(python3 -m pip install Appium-Python-C ...
随机推荐
- spring jpa 带参数分页查询(一)
1.写个接口继承JpaRepository @NoRepositoryBean public interface BaseRepository<T,PK extends Serializable ...
- express 设置跨域
app.use(function (req, res, next) { res.header('Access-Control-Allow-Origin', 'http://localhost: ...
- display:line-block
1.那是因为第二个标签是inline-block,它的对齐方式是基线对齐,对齐的是第一个元素里面字的下划线,所以第二个元素的下边缘对齐的是1的下划线,只要在第二个元素里面加内容或者加个空格( )就可以 ...
- 《SaltStack技术入门与实践》—— Event和Reactor系统
Event和Reactor系统 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 Event是SaltStack里面的对每个事件的一个记录,它相比job ...
- Java各种锁机制简述
线程安全是多线程领域的问题,线程安全可以简单理解为一个方法或者一个实例可以在多线程环境中使用而不会出现问题. 在 Java 多线程编程当中,提供了多种实现 Java 线程安全的方式: 最简单的方式,使 ...
- linux运维、架构之路-git版本管理
一.常见版本管理系统 1.SVN 集中式的版本控制系统,只有一个中央数据仓库,如果中央数据仓库挂了或者不能访问,所有的使用者无法使用svn,无法进行提交或者备份文件 2.Git 分布 ...
- 【bzoj4551】[Tjoi2016&Heoi2016]树
*题目描述: 在2016年,佳媛姐姐刚刚学习了树,非常开心.现在他想解决这样一个问题:给定一颗有根树(根为1),有以下 两种操作:1. 标记操作:对某个结点打上标记(在最开始,只有结点1有标记,其他结 ...
- C# 很久以前几个常用类
Base64加密解密 using System; using System.Collections.Generic; using System.Linq; using System.Text; nam ...
- Behaviour Tree Service 中的几个函数
Service中可以override的函数有8个,因为每个函数都有个AI版本的,所以实际上是4组函数,AI版本的和非AI版本基本一样, 他们分别是: Receive Search Start (AI) ...
- wnmp部署
原文地址: https://www.cnblogs.com/chaooo/p/5462781.html Before:提前规划好的目录结构 1.安装Nginx 到Nginx官网下载最新稳定版 ht ...