《老鸟python 系列》视频上线了,全网稀缺资源,涵盖python人工智能教程,爬虫教程,web教程,数据分析教程以及界面库和服务器教程,以及各个方向的主流实用项目,手把手带你从零开始进阶高手之路!点击 链接 查看详情

appium

阅读:314925135    分享到

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 的工作量;

语言/框架 Github地址
Ruby https://github.com/appium/ruby_lib
Python https://github.com/appium/python-client
Java https://github.com/appium/java-client
JavaScript (Node.js) https://github.com/admc/wd
Objective C https://github.com/appium/selenium-objective-c
PHP https://github.com/appium/php-client
C# (.NET) https://github.com/appium/appium-dotnet-driver
RobotFramework 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 真手机。


如果以上内容对您有帮助,请老板用微信扫一下赞赏码,赞赏后加微信号 birdpython 领取免费视频。


登录后评论

user_image
小眼女神
2020年3月8日 22:37 回复
  1. 前端自动化太依赖GUI,在敏捷开发流行的今天,投入时机,投入成本,维护成本,产出效益,需要针对项目具体情况好好估量;
  2. Appium还不成熟,很多地方,特别是iOS新的XCUI的推出,对这种依赖Apple源生工具的框架封装提出了巨大挑战;
  3. 仅代表个人感谢*主的无私付出。

user_image
陈梓瀚
2020年3月1日 23:50 回复

应届生刚加入公司自动化部门,感觉基本都是正在学习的方向,马克一下先。


user_image
phodal-InfoQ社区编辑
2020年2月27日 18:58 回复

谢谢前辈收获满满!我拿高薪资时,请你吃饭哈[大笑]


user_image
方刃
2020年1月11日 17:17 回复

系统去学习哈


user_image
大暖男哥哥
2019年8月18日 17:57 回复

不说别的 看了那么多环境搭建教程,不管是什么软件环境,这么细致的您是第一个


user_image
sofish
2019年7月2日 10:11 回复

我想咨询下,现在我已经可以做各种操作了。可以去面试做自动化相关的工作吗 或者我现在的项目怎么去开展自动化测试


user_image
tombkeeper
2019年5月10日 10:39 回复

感觉还不错,转了


user_image
金少海
2019年3月28日 22:48 回复

我想搞个猫眼票务的抢票软件,抢演唱会门票,手动实在抢不到,老哥你觉得可以搞不?我没有看到有网页版的或者手机网页端的,只有app内或者wx小程序


user_image
赵劼
2019年1月18日 20:20 回复

不错不错!


user_image
Hex
2018年12月20日 23:09 回复

感谢大佬!!


user_image
hzlzh
2018年10月23日 03:27 回复

想问下有没有视频教程或者可以推荐的,谢谢


user_image
Michael李登淳
2018年10月19日 18:49 回复

谢谢老师分享


user_image
一条叫小白的黑狗
2018年7月17日 07:50 回复

你好,我想请教一个问题,比如在用appium的时候,怎么获取手机里面的剪切板数据


user_image
曾國祥
2018年7月16日 14:50 回复

学习贵在坚持


user_image
我是大侠
2018年6月27日 19:23 回复

老哥,不知道你还能看到不,我想问下,比如支付宝有一些刮奖的。那appium能模拟刮奖么??刮了以后数据有啥变化没??或者说如何来识别刮奖这种界面??


user_image
李元华
2018年5月6日 08:36 回复

楼主的教程非常好,非常详细,感谢!