因为官网文档写的没有梯度,作为新手的我花了好几个小时硬是没看明白它是怎么工作的。

网上教程也基本都是翻译,所以结构很复杂、和其他技术耦合度很高,且没有说明。

我自己总结了一份超简单 Appium 自动化测试示例(Node.js版)

本示例,默认在Mac(已安装 XCode、Node.js)测试iOS app。

那么 Appium 到底是怎么工作的呢?

  1. 首先,你需要启动一个 Appium 服务(它会接收你发出的测试指令,并控制App完成相关动作)。
// 安装
$ npm install -g appium
// 启动 appium 服务
$ appium
  1. 然后,你需要build一个可以自动化测试的app包。

    使用下面命令build,在 ./build/Release-iphonesimulator/ 得到XXX.app。

    我测试的app放在目录./apps/
$ xcodebuild -sdk iphonesimulator10.3
// iphonesimulator 代表模拟器
// 10.3 是 iOS 版本
  1. 再然后,你需要写一段测试代码。

    你可以得到一个特别特别简单例子Appium-Sample-Node

    因为Appium本身功能很弱,我们依赖 wd.js、mocha.js和chai.js 完成测试代码。

wd.js 优雅地获取App元素,如按钮(button)、文字(label)等等

mocha.js 优雅地做测试前准备、测试后处理

chai.js 优雅地使用断言

  1. 最后一步,执行你的测试代码。

    如果你的mocha是全局安装,$ npm run ios-simple可以替换成$ mocha ios-simple.js
$ cd Appium-Sample-Node && npm install
$ npm run ios-simple

现在你会了吗?

那么 Appium 到底是怎么工作的呢?的更多相关文章

  1. 有一部分程序员还不知道Java 中的注解到底是如何工作的?

    作者:人晓 自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分.开发过程中,我们也时常在应用代码中会看到诸如@Override,@Deprecated这样的注解. 这篇文章中, ...

  2. Java中的注解到底是如何工作的?

    作者:人晓 www.importnew.com/10294.html 自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分.开发过程中,我们也时常在应用代码中会看到诸如@Over ...

  3. IPFS 到底是怎么工作的?

    简介 我们知道,一个存储服务,最基本的功能就是存和取.IPFS 中提供了这两种语义,那就是 add 和 get 操作. 在 IPFS 系统中执行 add 操作,就是执行了一次存操作,放在网络的概念里, ...

  4. SendMessage到底是如何工作的?

    以下内容摘自<<Windows核心编程>>: 概要: SendMessage对于在同一个线程中调用的话,直接调用的是当前线程所属窗口的窗口过程函数(WndProc);如果是跨线 ...

  5. python3多线程应用详解(第二卷:多线程到底是怎么工作的)

    现在很多人都说用多线程工作快是因为多个不同任务可以同时执行,注意我说的是不同任务,要是重复做一件事达到相同效果就是画蛇添足了,其实这是个错误的说法,线程真正的本质是无法同时执行的.现在我们来看下多线程 ...

  6. appium介绍和工作原理

    导读 Appium这个听起来既生疏也熟悉的自动化测试工具,比起原生的UiAutomator可能是异常的不起眼,可是却是有自身独当一面的能力,可以完成许多高难度作业,完成UiAutomator不可能完成 ...

  7. (转)完全用GNU/Linux工作 by 王珢

    完全用GNU/Linux工作 王珢      (看完这篇博文,非常喜欢王珢的这篇博客,也我坚定了学gnu/linux的决心,并努力去按照国外的计算机思维模式去学习编程提高自己.看完这篇文章令我热血沸腾 ...

  8. PHP底层工作原理

    最近搭建服务器,突然感觉lamp之间到底是怎么工作的,或者是怎么联系起来?平时只是写程序,重来没有思考过他们之间的工作原理: PHP底层工作原理 图1 php结构 从图上可以看出,php从下到上是一个 ...

  9. 【转】Android开发实践:自定义带消息循环(Looper)的工作线程

    http://ticktick.blog.51cto.com/823160/1565272 上一篇文章提到了Android系统的UI线程是一种带消息循环(Looper)机制的线程,同时Android也 ...

随机推荐

  1. JAVA学习路线图(一文详解)

    此乃是java攻城狮的学习路线图,由简到繁,由易到难,一步步的学习,最后成为JAVA攻城狮. 阶段1 1:学习HTML 2:学习CSS 3:JavaScript 4:jQuery 5:xml解析 6: ...

  2. 阿里云有对手了!CDN横评:腾讯云优势明显

    如今,云计算产品越来越多,像国内的BAT三大巨头都提供了云主机(腾讯云CVM.阿里云ECS.百度云BCC),另外还有存储.数据库.安全等相关云服务.在这其中,CDN也是一项重要的云服务,CDN指的是内 ...

  3. java_==和equal方法

    java测试两个变量是否相等有两种方式: 一种是利用"=="运算符 值和对象的判断 一种是利用equals()方法 只是值的判断 1.如果两个变量是基本类型变量,且都是数值类型(不 ...

  4. [补档][HNOI 2008]GT考试

    [HNOI 2008]GT考试 题目 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字. 他的不吉利数学A1A2... ...

  5. 白帽子之路首章:Footprinting, TARGET ACQUISITION

    *Disclaimer: All materials provided on this blog are for educational purposes only. The author and o ...

  6. window.settimeout用法与window.setInterval用法的区别

    setTimeout 和setInterval的功能都是经过某一个时间段后发生某件指定的事件或者方法. window.setTimeout方法是定时程序,也就是在某时间以后干什么, window.se ...

  7. 两个List比较各自对象的属性相同的问题

    最近做checkbox默认勾选的时候,涉及到两个list直接比较彼此对象的Id属性是否相同的问题.能力有限,想到这个笨方法. 创建一个Bean: public class Bean { private ...

  8. let const 下篇

    1.不存在变量提升 在之前的js代码中,声明一个变量或者是函数,会存在变量提升的现象,也就是说变量可以在声明之前使用,值为undefined: es5: console.log(a); //undef ...

  9. Nginx反向代理和负载均衡的配置

    1.反向代理配置 反向代理也称"动静分离",nginx不自己处理图片的相关请求,而是把图片的请求转发给其他服务器来处理. 修改nginx部署目录下conf子目录的nginx.con ...

  10. php面试题汇总二(基础篇附答案)

    介绍一些php常见面试题及答案,都是平时面试的时候经常会遇到的,小伙伴们仔细了解下吧.接着上一篇php面试题汇总一(基础篇附答案) 1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义 ...