英文官网:http://appium.io/introduction.html?lang=zh

Appium 简介

Appium是一个开源的自动化测试工具,其支持iOS和安卓平台上的原生的,基于移动浏览器的,混合的应用。

  • 原生应用:仅使用iOS和安卓标准SDK编写的应用
  • 基于移动浏览器的应用:用移动平台的浏览器访问的应用(Appium支持iOS上的Safri和安卓上的Chrom或内嵌的“浏览器”应用)
  • 混合应用:把基于一个webview实现的所有功能包装成一个应用的应用,webview是一个可以和网页各种元素交互的原生控件(译者注:因为所有的移动平台都会有浏览器,所以基于浏览器封装起来的应用就可以轻易做到跨平台了)。Phonegap这些项目可以很方便的把那些基于web技术实现的功能打封装成一个混合应用。

重要的是,Appium是跨平台的:它允许你采用同一套API在不同的平台(iOS,Android)上编写测试代码。这就让测试套件在iOS和Android平台上实现代码复用成为可能。

至于有关Appium跨平台支持和测试自动化模块化的具体意义,请参考 platform support doc.

Appium 理念

Appium是基于以下的四个理念设计来满足移动平台测试自动化的要求的:

  1. 您不应该因为需要自动化测试您的应用而不得不以任何形式去重新编译或者修改你的app
  2. 您不应该把自己固定在一门特定的语言和一个特定的框架上去实现和运行你的测试
  3. 当说到测试自动化APIs的时候,一个移动测试框架不应该做“重新发明轮子”的事情,
  4. 一个移动测试自动化框架应该是开源的,无论是在精神上,实际上,还是名义上!

Appium 设计

那么Appium项目的架构是如何满足这些理念的要求的呢?为了实现第#1个要求,我们在背后使用的是移动平台供应商(译者注:iOS的UIAutomation和Android的Instrumentation及UIAutomator)提供的标准自动化测试框架。这样一来,我们就不需要往你的app里面编译进去任何的Appium相关的或第三方代码或框架。这就意味着”你测试的是你将要发布的那一个应用“。我们使用的移动平台供应商提供的框架如下:

  • iOS: 苹果公司的 UIAutomation
  • Android 4.2+: Google公司的 UiAutomator
  • Android 2.3+: Google公司的 Instrumentation. (Instrumentation 的支持是通过绑定另外一个独立的Selendroid项目来实现的)

为了实现第#2个要求,我们的做法是把不同的移动平台供应商的自动化测试框架进行一次更高层次的封装,做成一套统一的API暴露出来,也就是我们要说的WebDriver API了。WebDriver(也叫做”Selenium WebDriver“)指定使用了一套客户端-服务器端协议(也就是JSON Wire Protocol),基于这一套协议,客户端无论是用什么语言编写的都能够通过HTTP请求恰当的发送到服务器。事实上现在已经存在有使用不同流行语言编写的客户端了。这也就意味着您可以随便使用任何你喜欢的测试执行过程管理平台和测试框架,因为你使用到的Appium客户端的库仅仅是一个HTTP客户端而已,你可以用任何你喜欢的方式把它嵌入到你的代码里面去。换一个说法就是,Appium&WebDriver客户端实际上并不是真正的”测试框架“,而是"自动化测试库”,你可以借助它们按照你自己喜欢的方式来搭建管理你的测试环境。

我们使用同样的方法实现了第#3个要求:鉴于WebDriver事实上已经是网络浏览器自动化测试的标准,并且已经立为W3C的工作草案,那么我们有什么必要针对移动设备再重新建立一套标准呢?没有必要!我们只需要扩展相应的WebDriver API来方便移动平台测试自动化的使用就行了。

至于第#4点就不言而喻了--你现在在读这篇文章这些内容就是因为Appium是开源的。

Appium 概念

客户端/服务器端架构
Appium的核心是一个暴露了REST API的网络服务器。它接收客户端过来的连接,监听(客户端过来的)命令,在移动设备上运行命令,然后把代表命令运行结果的HTTP响应包发送回客户端。我们使用客户端/服务器段的架构事实上为我们打开了很多可能性:我们可以在任何支持http 客户端API的语言上面实现我们的测试代码,当然使用我们提供的”Apppiu客户端库“会更加方便高效。我们可以把服务器端放在跟我们的测试运行机器完全不一样机器上。我们可以低头安心编写测试用例然后依赖远程的云服务平台如“Sauce Labs”来接收和翻译我们的测试命令。

会话
自动化往往都是在一个拥有会话的上下文中进行的。客户端往服务器端发起一次会话的方式根据具体不同的库而会有所不同,但相同的是它们最终都会发送一个包含所谓的“desired capabilities"JSON对象的Post/session的请求到服务器端。这样服务器端就会开启一个自动化会话并把会话ID发送回客户端以便往后的持续的命令传递。

Desired Capabilities(不好翻译,所以当成专用术语不翻译算了)
Desired Capabilities是由客户端发送给Appium服务器端的用来告诉服务器去启动哪种我们想要的会话的一套键值对集合。当中也有一些键值对是用来在自动化的过程中修改服务器端的行为方式的。比如,我们可以把键为platformName的capability的值设置成iOS来告诉服务器我们想要开启的是一个iOS的会话,而非Anddroid的会话。或者我们可以把键为safariAllowPopups 的capability的值设置成true来确保在Safari自动化会话的过程中,我们可以使用JavaScript来弹出一个新窗口。要查看Appium支持的完整的capabilities列表,请查看capabilities doc。

Appium 服务器
Appium是一个由Node.js编写的服务器。可以通过源码或NPM进行编译和安装。

Appium 客户端
存在很多对WebDriver协议进行扩展的Appium客户端库(针对以下语言的库:Java,Python,PHP,JavaScript,以及C#).当使用Appium的时候,相对常规的(译者注:没有扩展的)WebDriver库,我相信你更会选择使用这些扩展后的库。你可以在这里查看所有的库。

Appium.app, Appium.exe
这些Appium服务器的GUI封装版是可以下载的。事实上这些在配置appium服务器可运行环境时已经和其他东西一起打包安装了的,所以你并不需要担心要用Node再去下载安装。当中有一个Inspector也会一起安装,你可以用它来查看你的app的结构,这样你就可以在它的协助下很方便的编写测试脚本了。

开始

恭喜!你现在已经装备好足够的知识来开始使用Appium了,何不去getting started doc获取更加详细的需求描述和建议呢?

 

作者

自主博客

微信

CSDN

天地会珠海分舵

http://techgogogo.com

服务号:TechGoGoGo

扫描码:

©著作权归作者所有:来自51CTO博客作者zhukev的原创作品,如需转载,请注明出处,否则将追究法律责任

自动化测试 官网 appium

0

分享

微博 QQ 微信

收藏

上一篇:appium框架之bootstr... 下一篇:Appium 服务器端从启动到c...
zhukev

117篇文章,7W+人气,0粉丝

Ctrl+Enter 发布

发布

取消

推荐专栏更多

VMware vSAN中小企业应用案例

掌握VMware超融合技术

共41章 | 王春海

¥51.00 346人订阅

订   阅

基于Kubernetes企业级容器云平台落地与实践

容器私有云平台实践之路

共15章 | 李振良OK

¥51.00 595人订阅

订   阅

网工2.0晋级攻略 ——零基础入门Python/Ansible

网络工程师2.0进阶指南

共30章 | 姜汁啤酒

¥51.00 1557人订阅

订   阅

负载均衡高手炼成记

高并发架构之路

共15章 | sery

¥51.00 506人订阅

订   阅

带你玩转高可用

前百度高级工程师的架构高可用实战

共15章 | 曹林华

¥51.00 461人订阅

订   阅

猜你喜欢

我的友情链接 最新HTML BroadcastChannel API引荐 简述centOS 7系统用户和组的管理及配置 解析DELL R710服务器迁移操作内容 开学季出大事:某教育局丢失3台虚拟机 EVA4400存储虚拟机+数据库数据恢复成功案例 服务器数据恢复通用方法+服务器分区丢失恢复案例 在CentOS7上部署squid缓存服务器及代理功能 EMC 5400服务器raid阵列瘫痪数据恢复成功案例 服务器数据恢复案例 / raid5阵列多块硬盘离线处理方法 华为存储服务器卷丢失数据恢复成功案例 斐讯K3C路由器无需刷机用vlmcsd搭建KMS服务器激活Windows&office 高校服务器虚拟化——高校数据中心建设 【长文+图片】HP FC MSA2000服务器瘫痪数据恢复过程 服务器断电瘫痪数据丢失后恢复数据的过程 华为5800服务器raid阵列数据恢复成功案例 【长文慎点】IBM X3850服务器删除并重建虚拟机恢复过程 HP EVA4400服务器RAID信息丢失数据恢复方法 Apache 工作模式的优化深入 部署PXE远程安装服务 并实现Kickstart无人值守安装

扫一扫,领取大礼包

0

分享

zhukev

转载于:https://blog.51cto.com/techgogogo/1608450

Appium官网Introduction相关推荐

  1. 超全的App 测试工具大全,收藏这篇就够了【附带官网|GitHub地址】

    随着移动互联网的高速发展,App 应用非常火,测试工程师也会接触到各种 app 应用.除了人工测试之外,也可以通过一些测试工具来提高我们的测试效率,以下对于我用过或听过的 app 测试工具做了一个统一 ...

  2. 1.1 Introduction中 Consumers官网剖析(博主推荐)

    不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ Consumers 消费者(Consumers) Consumers label t ...

  3. c语言递归求五阶行列式源代码,久游堂怎么样 -官网

    iOS版 # -*- coding: utf-8 -*- """ @author: Dell Created on Tue Dec 24 12:33:56 2019 &q ...

  4. python官网地址-python官网网址

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 通过 pip 安装(推荐)您可以通过执行以下命令,将腾讯云 api python ...

  5. spaCy教程(翻译自官网)

    译者: 明天依旧可好 | 柯尊柏 联系方式: ke.zb@qq.com 翻译时间: 2020.2.26 原文链接:spaCy 101: Everything you need to know 说明: ...

  6. Knockout 官网学习文档目录

    官网:https://knockoutjs.com/documentation/introduction.html Knockout-Validation: https://github.com/Kn ...

  7. 自动化专业学python有用吗-马哥教育官网-专业Linux培训班,Python培训机构

    今天小编要来说一下Python自动化的学习思路, 对于刚刚进入的测试行业的人来说,未来该怎么样朝着自动化方向发展,即使接触到了自动化测试,又该从何下手去学呢? 简单的说, 做测试做的好,会了接口,会了 ...

  8. MNE溯源fieldtrip官网教程

    MNE溯源fieldtrip官网教程 Introduction 在本教程中,您可以找到有关如何使用最小范数估计进行源重构的信息,以重构单个主题的事件相关字段(MEG).我们将使用预处理教程中描述的数据 ...

  9. HTML网页设计期末课程大作业~仿腾讯游戏官网设计与实现(HTML+CSS+JavaScript)

    HTML期末大作业~基于HTML+CSS+JavaScript腾讯游戏官网设计与实现 关于HTML期末网页制作,大作业A+水平 ~腾讯游戏官网HTML+CSS+JavaScript实现,共有游戏首页 ...

最新文章

  1. day31 logging 日志模块
  2. MapReduce 中文版论文(转载)
  3. ORM之SQLAlchemy
  4. ORM 关系对象映射 基础知识点
  5. Java使用MyEclipse2017时的一些小细节
  6. Centos系统磁盘扩容
  7. linux nginx cdn,linux – Nginx Proxy_Pass到CDN与直接击中CDN. P...
  8. Spring Boot 多模块项目实践(附打包方法)
  9. HDU 4339 Query
  10. vue复选框组件自定义对勾_vue+element:树级复选框组件使用
  11. 【UVA - 10038】Jolly Jumpers (模拟,水题,标记)
  12. ZZULIOJ 1059:最高分
  13. pptx版式验证代码
  14. 随想录(uclibc的学习)
  15. 深入理解JVM-类加载器深入解析(3)
  16. Ubuntu删除不干净导致的一系列后果
  17. java运行库下载_Java运行库下载-jdk1.7 64位下载1.8.0.20 官方最新版-东坡下载
  18. C#使用NOPI导入Excel
  19. 麻雀虽小五脏俱全----blender介绍
  20. 帝国cms php替换,帝国cms怎么替换网址域名

热门文章

  1. iphone无线充电充电测试软件,无线充电哪家强?5款Qi无线充电板横向测评
  2. 【每日一题】航班预订统计
  3. 五分钟看完 RocketMQ应用
  4. iOS 去除按钮的按下效果(阴影)
  5. jQuery校验 jQuery Validate 表单验证详解
  6. python矩阵处理库_用于处理非常大的矩阵的Python库
  7. Linux网卡图形化,Linux系统无线网络图形化软件(LinSSID)使用方法
  8. php变量类型怎么表示,PHP 数据类型_php
  9. php 随机在文章中添加锚文本_seo网站优化技巧之:8种优质锚文本的做法
  10. show index mysql_MySQL SHOW INDEX 语法解析