appium 是一个自动化测试开源工具,支持 IOS 平台和 Android 平台上的原生应用,web应用和混合应用。

移动原生应用是指那些用 IOS 或者 Android SDK 写的应用(Application 简称 app)。

移动web应用是指使用移动浏览器访问的应用(appium 支持 IOS 上的 Safari 和 Android 上的 Chrome)。

混合应用是指原生代码封装网页视图——原生代码和 web 内容交互。比如,像 Phonegap,可以帮助开发者使用网页技术开发应用,然后用原生代码封装,这些就是混合应用。

重要的是,appium 是一个跨平台的工具:它允许测试人员在不同的平台(IOS,Android)使用同一套 API 来写自动化测试脚本,这样大大增加了 IOS 和 Android 测试套件间代码的复用性。

我的教程讲解的是使用 Python 语言对 Android 平台的 app 做自动化测试。

appium 与 Selenium

appium 类库封装了标准 Selenium 客户端类库,为用户提供所有常见的 JSON 格式 Selenium 命令以及额外的移动设备控制相关的命令,如多点触控手势和屏幕朝向。

appium 客户端类库实现了Mobile JSON Wire Protocol(一个标准协议的官方扩展草稿)和 W3C WebDriver spec(一个传输不可预知的自动化协议,该协议定义了 MultiAction 接口)的元素。

appium 服务端定义了官方协议的扩展,为 appium 用户提供了方便的接口来执行各种设备动作,例如在测试过程中安装/卸载 App。这就是为什么我们需要 appium 特定的客户端,而不是通用的 Selenium 客户端。当然,appium 客户端类库只是增加了一些功能,而实际上这些功能就是简单的扩展了 Selenium 客户端,所以他们仍然可以用来运行通用的 Selenium 会话。

支持多平台、多语言

appium 是跨平台的,可以用在 OSX,Windows 以及 Linux 桌面系统上运行。

appium 选择了 Client/Server 的设计模式。只要 client 能够发送 http 请求给 server,那么的话 client 用什么语言来实现都是可以的,这就是 appium 及 Selenium(WebDriver)如何做到支持多语言的原因;

appium 扩展了 WebDriver 的协议,没有自己重新去实现一套。这样的好处是以前的 WebDriver API 能够直接被继承过来,以前的 Selenium(WebDriver)各种语言的 binding 都可以拿来就用,省去了为每种语言开发一个 client 的工作量;

raft-node="block" data-draft-type="table" data-size="normal" data-row-style="normal">语言/框架Github地址https://github.com/appium/ruby_lib语言/框架Github地址https://github.com/appium/python-client语言/框架Github地址https://github.com/appium/java-client语言/框架Github地址https://github.com/admc/wd语言/框架Github地址https://github.com/appium/selenium-objective-c语言/框架Github地址https://github.com/appium/php-client语言/框架Github地址https://github.com/appium/appium-dotnet-driver语言/框架Github地址https://github.com/jollychang/robotframework-appiumlibrary

appium 工作原理

在安装和介绍 appium 之前,非常有必要介绍一下appium 是如何工作的。

通过上面一张图简单展示了appium的工具原理。

首先,appium 支持多语言,因为它针对流的几种语言分别开发的相应的 appium 库。好处就是我们可以选择自己熟悉的语言编写 appium 脚本。

其次,appium 支持多平台,包括 MAC 和 Windows。它针对这两大平台开发了 appium-Server。

最后,appium 又同时支持 Android 和 IOS 两个操作系统。

这就使得 appium 变得非常灵活。

当我在 MAC 平台上,通过 Python(python-client )编写了一个 appium 自动化脚本并执行,请求会首先到 appium.dum(MAC 下的 appium-Server),appium-Server 通过解析,驱动 IOS 设备来执行 appium 自动化脚本。

或者,我在 Windows 平台上,通过 Java( java-client )编写了一个 appium 自动化脚本并执行,请求会首先到 appiumForWindow.zip(Window 下的 appium-Server),appium-Server 通过解析,驱动 Android 虚拟机或真机来执行 appium 脚本。

所以,你会看到 appium 的强大之处就在于此。

你都需要安装什么?

这才是你最关心的问题,使用 appium 都需要安装些什么?其实,从 appium 工作原理你就应该知道需要装什么了。

1.安装 JDK:因为 Android 系统的 app 是用 Java 语言开发的(就算是混合应用,也是要包含在 Java 的壳内)。

2.安装 Android SDK:因为我们的教程讲解的是在对 Android 系统的 app 做自动化。

3.安装 Appium Server 或者 Appium-Desktop:我们的程序需要通过该软件操作手机,appium Server 已经很多年没有更新了,我们现在普遍倾向于安装使用 appium-desktop,后面这两种安装方式我们都会介绍,你只需要安装一个。

4.安装 Python:我们需要编写自动化测试程序所使用的语言。

5.安装 Appium-Python-Client:我们写的 Python 程序中,需要使用该模块的 API 和 appium Server 或者 appium-desktop 通信。

6.最后你需要一个 Android 模拟器(虚拟的手机),或一个 Android 真手机。

阅读原文:

appium​www.birdpython.com

appium 驱动 对应9.0 系统_第一章:appium相关推荐

  1. appium 驱动 对应9.0 系统_以后做Appium自动化测试,再也不会踩这些坑了!

    一.前言 APP的 webview 自动化是依赖于 chromedriver 的,并且每个APP的 webview 版本号都不太一样,这就导致了每次都需要重新去下载对应的chromedriver 版本 ...

  2. 从全职高手开始的系统_第一章 全职高手系统

    第一章 全职高手系统 "您好,您的辣子鸡丁!" 七月份的尾巴,正是这个季节最为炎热的时候. 此刻麻辣香餐馆里,一位二十出头的少年正端着盘子上着菜,他穿着最为普通的白衬衣,汗水如同蒸 ...

  3. 中兴B863AV3.2-M_安卓9.0系统_线刷包及教程

    中兴B863AV3.2-M_安卓9.0系统_线刷包及教程 固件介绍: 此版本分2种主控,一种的s905l3a,另外一种是s905l3a-b. 1.调出原厂固件屏蔽的wifi,开放原厂固件屏蔽的市场安装 ...

  4. c++语言编程,一个电灯两个开关控制,[理学]四川大学计算机学院精品课程_面向对象程序设计C++课件_游洪越_第一章绪论.ppt...

    [理学]四川大学计算机学院精品课程_面向对象程序设计C课件_游洪越_第一章绪论 主讲教师: 游洪跃 个人主页: /~youhongyue 邮件地址: youhongyao@ 教材:<C++面向对 ...

  5. 【笔记】Cocos2d-x高级开发教程:制作自己的捕鱼达人 笔记一:序_前言_第一章

    [笔记]Cocos2d-x高级开发教程:制作自己的<捕鱼达人> 笔记一:序_前言_第一章 转载请注明出处:http://blog.csdn.net/l_badluck/article/de ...

  6. 马丁福勒《UML精粹》读书笔记_第一章

    马丁福勒<UML精粹>读书笔记_第一章 UML的使用场景 必须遵从UML规则吗? 在上述草图.蓝图的场景下,不必过多强调遵从UML规则.因为我们使用UML的目的是为了一个好的设计,所以应将 ...

  7. 读书笔记|《金字塔原理》_第一章

    读书笔记|<金字塔原理>_第一章 [章节]--第一章为什么要用金字塔结构 [讲了什么] 1.首先是为什么要用金字塔结构? 2.如何将思想组织成金字塔结构? 2.1 归类分组,将思想组织成金 ...

  8. ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区 1 引言 1.1 读者定位 我们假设用户在阅读本指南前应已具备以下知识: · 熟悉W ...

  9. android 4.0系统,全新Android 4.0系统_手机Android频道-中关村在线

    与搭载Android 2.3系统的OPPO R807不同,OPPO R817搭载了Android 4.0系统.不过这款手机仍旧舍弃了Android系统的原生界面,因此两款手机在界面上的变化其实并不非常 ...

最新文章

  1. C++struct和class区别
  2. 少儿编程几种语言_您使用了几种编程语言?
  3. python读取文件夹下所有文件的名字_一键汇总同一文件夹下所有表格,三种小技巧分享给你...
  4. libpcap 库使用(二)
  5. php和python-php与python谁更适合web开发?为什么?
  6. laravel连接mysql8_php – 如何使用laravel运行MySql 8?
  7. php laravel设置创建目录的权限,在Laravel5中正确设置文件权限的方法
  8. graphpad折线图教程_GraphPad Prism 8.0绘制误差连线并填充颜色图
  9. word批量转PDF
  10. 固态硬盘SSD闪存芯片的颗粒类型 和 颗粒等级
  11. Python-Level2-day11:TCP客户端/服务端传输(循环模型之短连接与长连接形态);TCP粘包问题;与UDP对比;数据传输过程原理;
  12. css 压缩后出现了问题,觉得js或css压缩后不好调试?你应该认识一下source map了...
  13. html5 自动矢量化,ArcScan自动矢量化
  14. 学 android需要什么基础,学习安卓开发需要什么基础?
  15. Android状态栏微技巧,带你真正理解沉浸式模式
  16. ffmpeg学习(11)音视频文件muxer(2)多输入混流
  17. 金蝶专业版怎么反过账当月_金蝶专业版怎么反过账
  18. android 分辨率 2k,小米8分辨率是不是2k?
  19. 【ThinkPHP】ThinkPHP5 常用数据库查询语句
  20. 圣科鲁兹 计算机专业,加州大学圣克鲁兹分校计算机科学硕士

热门文章

  1. Bzoj3576 [Hnoi2014]江南乐
  2. SecureCRT 6.7.0.153 汉化绿色版
  3. linearLayout和二级菜单联动
  4. 新冠感染池检测选取最优池检测人数(概率模型理论公式+蒙特卡洛matlab仿真)
  5. ddr老化测试_塑胶类材料老化测试(Aging Test )常用的测试标准
  6. 4 转推流格式_网络互联互通直播系统 分会场直播一体机 各地连线直播推流
  7. 多个物体轮廓c语言提取算法,C++ opencv-3.4.1 提取不规则物体的轮廓
  8. selenium webdriver处理HTML5的视频播放
  9. Django入门-helloworld
  10. 软件测试工程师的核心竞争力是什么