上次介绍iQuery之后,已经有些朋友在开始在手机自动化测试程序里试用iQuery了,由于之前的介绍文档比较含糊,先搁置扩展iQuery使其支持多种编程语言的系列文章,补充一下iQuery的入门教程,之前写的介绍性文章可以参考:
1.    开源类库iQuery Android版使用说明
2.    类jQuery selector的控件查询iQuery开源类库介绍

iQuery是一个开源的自动化测试框架项目,有兴趣的朋友可以在这里下载:https://github.com/vowei/iQuery/downloads

源码位置:https://github.com/vowei/iQuery

iQuery for iOS简易教程

当前iQuery for iOS还只支持instrument里的自动化测试,在本教程里,我们使用下面的程序演示使用iQuery for iOS编写自动化测试用例的方法:

可用在iphone模拟器里的程序:https://github.com/vowei/iQuery/tree/master/iOS/targetApp
源代码:https://github.com/vowei/iQuery/tree/master/iOS/targetApp/Gestures

该教程里演示的自动化测试用例需要下载iQuery for iOS类库:

https://github.com/downloads/vowei/iQuery/iQuery%20for%20iOS.zip

依照下面的步骤创建并运行iOS程序的自动化测试用例:
1.    在Mac机上启动 instruments:

2.    在“Choose a Template for The Trace Document”对话框里选择“Automation”。

3.    点击instruments上的“Choose Target”下拉框 。


4.    将我们的演示用程序Gestures.app设置为目标程序。


5.    Gestures.app要求iOS 5的模拟器,需要显式设置。


6.    然后点击“Create …”按钮创建一个新的自动化测试用例脚本。


7.    并在新脚本对话框中输入如下代码。

8.    最后,点击底下的“run”按钮来执行自动化测试用例脚本,然后在结果对话框里查看结果。

iQuery for Android简易教程

这个教程是基于Android Instrumentation测试技术写的,但iQuery for Android同时还支持从View Server的输出中查询控件,关于如何从View Server中获取Android Activity层次信息的方法,后面会写文章讲到:

演示用的Android程序在:https://github.com/vowei/iQuery/tree/master/java/Test/multiplatformdemoproject
其源码在:https://github.com/vowei/iQuery/tree/master/java/sample

下面是使用iQuery编写Android Instrument UI测试的方法:
1.    打开eclipse并且创建一个新的Android工程(Create Android Project),命名为tutorial.


2.    iQuery支持android 2.2以上的版本,在这个教程里,我们选择Android 2.2平台。


3.    因为创建的是测试工程,因此不需要添加任何的Activity。


4.    工程创建完毕之后,更新新建工程的manifest.xml文件,添加一个新的instrumentation块,来指定要测试的应用的包名。


5.    在eclipse里右键单击tutorial工程,依次点击“Build Path”-> “Configure Build Path”。


6.    在“Properties for tutorial”对话框里,点击“Add External JARs”按钮。


7.    添加对iquery-core.jar和iquery-instrumentation.jar的引用,由于iQuery是基于antlr的,还需要添加对antlr-runtime-3.4.jar的引用。这篇教程里,我们使用robotium来抓取和修改UI控件的信息,还需要添加对robotium-solo-3.1.jar的引用。最后,Build path应该如下所示:


8.    创建一个新的测试用例文件,并输入下面的代码。

package cc.iqa.studio.demo.test;import java.io.*;import java.util.*;import org.antlr.runtime.*;import junit.framework.Assert;import cc.iqa.iquery.*;import cc.iqa.iquery.android.*;import com.jayway.android.robotium.solo.*;import android.test.ActivityInstrumentationTestCase2;import android.view.*;@SuppressWarnings("rawtypes")public class DemoOnlyTest extends ActivityInstrumentationTestCase2 {private static String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "cc.iqa.studio.demo.MainActivity";
private static String TARGET_PACKAGE_ID = "cc.iqa.studio.demo";private Solo _solo;@SuppressWarnings("unchecked")
public DemoOnlyTest() throws Exception {super(TARGET_PACKAGE_ID, Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME));
}public void setUp() throws Exception {this._solo = new Solo(this.getInstrumentation(), this.getActivity());
}public void testSimplifiedAPI() throws Exception {List<SoloTreeNode> r1 = iQuery.query(new SoloTreeNode(_solo.getCurrentViews().get(0)), "LinearLayout >> TextView [mText = 'Down Under']");Assert.assertEquals(2, r1.size());
}private List<ITreeNode> parseQueryAgainst(View root, String iquery)throws IOException, RecognitionException {InputStream query = new ByteArrayInputStream(iquery.getBytes("utf8"));ANTLRInputStream input = new ANTLRInputStream(query);iQueryLexer lexer = new iQueryLexer(input);CommonTokenStream tokens = new CommonTokenStream(lexer);iQueryParser parser = new iQueryParser(tokens);List<ITreeNode> candidates = new ArrayList<ITreeNode>();candidates.add(new SoloTreeNode(root));List<ITreeNode> result = parser.query(candidates);return result;
}}

9.    最后,将演示用的Android程序安装到模拟器或者手机上,并运行测试用例。

完整的测试用例文件可以从这里下载:
https://github.com/vowei/iQuery/blob/master/java/sample/src/cc/iqa/studio/demo/test/DemoOnlyTest.java

转载于:https://www.cnblogs.com/vowei/archive/2012/09/07/2674889.html

开源手机自动化测试框架iQuery入门教程(一)相关推荐

  1. 迷你MVVM框架 avalonjs 入门教程(司徒正美)

    迷你MVVM框架 avalonjs 入门教程 关于AvalonJs 开始的例子 扫描 视图模型 数据模型 绑定属性与动态模板 作用域绑定(ms-controller, ms-important) 模板 ...

  2. 手机数据抓包入门教程

    手机数据抓包入门教程 试读地址:http://pan.baidu.com/s/1hqf9N9a 介绍:本教程从专业的角度讲解手机抓包的各种方式,同时也对常见的UDP.TCP通信模式详细讲解.最后针对H ...

  3. 美团小程序框架mpvue入门教程

    美团小程序框架mpvue入门教程 自打写了 美团小程序框架mpvue蹲坑指南, 一发不可收拾,今天趁周末空闲,来写个mpvue(没朋友)的简单入门教程,本教程只针对新手,老鸟勿喷. 另外,我还专门为本 ...

  4. 关于swift5以上的SnapKit框架的入门教程使用

    关于swift的SnapKit框架的入门教程使用 苹果在swift框架下面,一般使用snapKit进行纯代码的自动布局.常见的布局方式一种是纯代码,还有VFL,此语法较难,或者相对来说比较麻烦.还有s ...

  5. vue 美团框架_美团小程序框架mpvue入门教程

    美团小程序框架mpvue入门教程 本教程只针对新手,老鸟勿喷. 另外,我还专门为本文做了一个简单的项目,如果懒得从头开始搭项目的童鞋,可以直接去我的 github上克隆到本地, 安装一下依赖,即可直接 ...

  6. Bootstrap框架菜鸟入门教程

    Bootstrap菜鸟入门教程 Bootstrap简介 Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简 ...

  7. crm开源系统 tp框架_thinkphp6学习教程与源码 tp6开源CMS系统源码研究

    thinkphp6最新正式版框架上市已经有一段时间了,从官方的介绍来看,tp6的框架和tp5有很大的区别,完全重新改写了底层架构代码和逻辑,所以不支持thinkphp5的无缝升级,也就是说如果你之前的 ...

  8. python 手机编程termux_Python新手入门教程_在手机上就能学习编程的软件

    Python新手入门教程_在手机上就能学习编程的软件 很多小伙伴会问:我在学编程,想利用坐地铁坐公交吃饭间隙学编程,在手机上能学编程的软件有哪些?毕竟时间宝贵啊!!哈哈哈!!! 这个问题,在悟空回答的 ...

  9. 接口自动化测试框架Karate入门

    介绍 在这篇文章中,我们将介绍一下开源的Web-API自动化测试框架--Karate Karate是基于另一个BDD测试框架Cucumber来建立的,并且共用了一些相同的思想.其中之一就是使用Gher ...

最新文章

  1. 面向对象解决了全局变量问题?
  2. Method threw 'java.lang.StackOverflowError' exception. Cannot evaluate 问题
  3. 精通python要多久-小白到精通python要多久
  4. VMware10 —— 安装CentOS7(图解)
  5. mysql数据库连接过多的错误,可能的原因分析及解决办法
  6. G少爷上证技术分析 8月31日
  7. LeetCode Hot100 ---- 二分查找专题
  8. linux c字符连接,C 语言实例
  9. python数据类型及字符编码
  10. npm安装vue-cli时报错解决方法
  11. mysql中dml语言_八、mysql DML语言
  12. 《高度安全环境下的高级渗透测试》—第1章1.5节安装OpenOffice
  13. echarts2 饼图标签文字换行
  14. Netflix/conductor学习笔记(1)
  15. 使用beautifulsoup4,爬取一波贴吧的表情包
  16. Processing 入门基础【秒懂小白篇】
  17. 如何做好DevOps Secrets管理
  18. 今日头条、抖音创始人张一鸣
  19. 如何在CentOS上配置虚拟IP地址 (VIP)
  20. linux终端用什么颜色好,linux 终端输出颜色

热门文章

  1. opencv中的imwrite如何保存_如何把公众号的文章用文档保存到电脑中?
  2. linux c账户安全性,linux c flash安全策略
  3. python中添加高斯噪声_关于python:高斯噪声与高斯白噪声
  4. java code combat_极客战记怎么换成java_「网易官方」极客战记(codecombat)攻略-沙漠-脆弱的士气......
  5. java红包雨_Java升职加薪课开发企业年会红包雨场景项目实战视频教程
  6. 安卓耗电监控app_Android系统十大耗电应用拍照APP排第一
  7. make j4什么意思_为什么天天坚持撸铁 肌肉增长不明显
  8. matlab组织的培训讲义,matlab培训讲义.doc
  9. eas库存状态调整单不能反审核_订单少了,库存多了,利润没了……
  10. navicat导出数据到oracle,使用Navicat premium导出oracle数据库中数据到SQL server2008数据库中...