移动测试 Appium源码初探

移动测试 Appium源码初探

介绍

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

“移动原生应用”是指那些用 iOS 或者 Android SDK 写的应用。

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

“混合应用”是指原生代码封装网页视图——原生代码和 web 内容交互。

文档

首先我们先看下Appium的官方文档地址:

入门手册:http://appium.io/tutorial.html

中文文档:http://appium.io/slate/cn/master/

安装

Appium支持各种语言的类库驱动来做移动端自动化测试,这些类库封装了标准Selenium客户端类库,为用户提供所有常见的JSON 格式selenium命令以及额外的移动设备控制相关的命令,如多点触控手势和屏幕朝向。

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

下面我们看下如何安装Python版的驱动类库:

python pip 环境不会弄?参见这:[快学Python3]环境安装

使用pip命令来安装:

pip install Appium-Python-Client

通过git来安装:

git clone git@github.com:appium/python-client.git
cd python-client
python setup.py install

不管是哪种方式,安装完成后在你的python安装目录,以笔者的为例(笔者为Python3.6,安装在C:\Python36目录下),你可以在以下目录找到已经安装的Appium-Python-Client的源码:

C:\Python36\Lib\site-packages\appium

目录说明

Appium-Python-Client安装好后,其目录结构如下图所示:

appium下一级目录如下图:

common: 用于定义了Appium-Python-Cliennt的通用类,该目录下的exceptions.py定义了content(你可以翻译为上下文环境)异常基类

webdriver: Appium-Python-Client的核心模块,定义了各种错误、命令和方法,后面就这个package进行详解说明

__init__.py: 你懂的,不懂也别找我^_^

saucetestcase.py: 设备枚举和一些初始化、清理功能的实现

下面重点对webdriver这个package进行说明

webdriver

必须注意的时,Appium客户端驱动包是基于json wire protocol实现的,其依赖selenium2中的webdriver,所以在实际是应用Appium-Python-Client时,是需要先安装selenium2的。

下面我们对Appium-Python-Client中最核心的功能package webdriver进行分析说明:

先看下图红色框中的即为webdriver的目录结构:

下面对webdriver下各模块进行说明:

common/mobileby.py:  定义了移动测试端专用的一些定位方法

common/multi_action.py: 定义和实现了如何把移动端操作串起来的方法

common/touch_action.py: 定义和实现了的移动端的一些动作行为

connectiontype.py: 定义了设备连接的类型

errorhandler.py: 定义和实现移动端错误处理类

mobilecommand.py: 定义了移动端json wire protocol的命令

switch_to.py: 定义和实现了移动端web view上下文环境切换类

webdriver.py: 最基础核心的模块,定义和实现了各种常用方法(例如查找、拖曳、滚动等等)

webelement.py: 最基础核心的模块,定义和实现了元素常用的方法(例如查找,设置值等等)

__init__.py: 你懂的,对外导出了webdrive和webelement模块中的对象

原文发布于微信公众号 - 开源优测(DeepTest)

原文发表时间:2017-12-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏linux运维学习

linux学习第二十四篇:管道符和作业控制,shell变量,环境变量配置文件

vmstat 1 自动显示系统的状态 sleep 100 可以使系统沉睡100秒 管道符和作业控制 管道符的作用:把管道符前面执行的结果输出内容交给管道符后面...

20870
来自专栏Jerry的SAP技术分享

如何创建一个新浪微博应用以及获得Access token

打开网页http://open.weibo.com/wiki/%E9%A6%96%E9%A1%B5

17440
来自专栏大数据杂谈

Windows下python2和3共存问题

在学习python的过程中,有人推荐2,也有人推荐3。但是,不管选择了哪一个版本,总是想着是否能2个版本同时安装并兼容使用呢? 真的可以吗? 答案是肯定的,完全...

22990
来自专栏Web项目聚集地

Linux养成计划(四)

Linux系统会内建 vi 文本编辑器,Vim具有程序编程的能力,可以看作是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计、补充代码、编译及...

11210
来自专栏耕耘实录

PHP学习笔记(3)--Mysql部分简单命令

8320
来自专栏沈唁志

Linux学习中常用操作命令

25350
来自专栏Django中文社区

简单全文搜索

搜索是一个复杂的功能,但对于一些简单的搜索任务,我们可以使用 Django Model 层提供的一些内置方法来完成。现在我们来为我们的博客提供一个简单的搜索功能...

48560
来自专栏我是攻城师

elasticsearch里面bulk的用法

40670
来自专栏狂码一生

linux系统挂载磁盘、卸载磁盘、磁盘分区

一、挂载磁盘     1.查看磁盘列表、查看是否有硬盘未被挂载:     >fdisk -l ?     可以看到/dev/sdb硬盘没有被挂载。     2....

1.9K90
来自专栏技术碎碎念

Http请求与响应

Http协议对浏览器发出的Request格式以及对Web服务器发出的Response格式有具体的规定。 请求部分由三部分组成: Requset line:请求...

29460

扫码关注云+社区

领取腾讯云代金券