博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
开源手机自动化测试框架iQuery入门教程(三)
阅读量:5024 次
发布时间:2019-06-12

本文共 2100 字,大约阅读时间需要 7 分钟。

前几篇入门教程请参看:

  1.  
  2.  

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

源码位置: 

在前文讲了iQuery的伪类和伪属性的使用方法,以及注册一个新的伪类和伪属性的方式,例如在Android上注册一个伪类的代码:

iQueryParser parser = iQuery.createParser(“:switch”);parser. registerPseudoClass(“switch”, new IPseudoClass() {    public boolean resolve(ITreeNode node) {        return filterByNameEndsWith(node, "CheckBox");    }});

然而如果每次使用自定义的伪类,都要重新注册伪类实现方式的话,那势必会让代码变得很臃肿,并难以维护。因此为了解决这个问题,在最近的代码更新中,实现了一个iQuery模板解释器的概念,其实模板解释器跟普通的解释器是完全一样的,只不过基于模板创建的解释器自动会继承模板里已经注册好的自定义伪类和伪属性。

在Android上,创建模板解释器和从模板里创建解释器的方法如下:

iQueryParser parserTemplate = iQuery.createParser("");parserTemplate.registerPseudoAttribute("text", new IPseudoAttribute() {    public String resolve(ITreeNode node) {        return node.getText();    }});parserTemplate.registerPseudoClass("tv", new IPseudoClass() {    public boolean resolve(ITreeNode node) {        return iQuery.filterByNameEndsWith(node, "TextView");    }});iQueryParser parser = iQuery.createParser(":tv [:text = '登录']", parserTemplate);LayoutTree tree = constructTree("testParserMethod.txt");List
nodes = parser.query(tree.getAllNodesCopy());Assert.assertEquals(1, nodes.size());Assert.assertTrue(nodes .get(0) .getName() .compareTo("android.widget.TextView@44f379f0") == 0);

在上面的代码里,第1行使用iQuery.createParser(“”)的方式创建一个解释器模板,第2 – 11行在解释器模板上注册了一个伪属性和伪类,然后第13行从模板里创建一个新的解释器,这个解释器就自动继承了模板里的伪类和伪属性定义。

在iOS上,创建模板解释器和从模板里创建解释器的方法如下:

var iq = new iQuery("", true);iq.parser.registerPseudoAttr("text", function(uiaobj) {    if ( uiaobj != undefined ) {        return uiaobj.name();    }});iq.parser.registerPseudoClass("switch", function(uiaobj) {    return isMatch(uiaobj, new Array("UIASwitch"));});var result = root.$("> :button[:text = 'Second']", iq);assert.Equals(1, result.length);result = root.$("> :switch", iq);assert.Equals(1, result.length);

上面的代码里,跟Android版代码类似,第1行通过new iQuery(..)来创建一个模板解释器,其中第二个参数是指明创建模板解释器时,需要注册默认的伪类和伪属性,当然如果设置为false,则可以在代码里手工注册默认的伪类和伪属性,达到修改默认实现的目的。第2 – 9行在模板上注册伪类和伪属性,然后第11行和14行分别使用模板解释器来执行控件查询操作。

转载于:https://www.cnblogs.com/vowei/archive/2012/09/19/2693838.html

你可能感兴趣的文章
ssh无密码登陆屌丝指南
查看>>
MySQL锁之三:MySQL的共享锁与排它锁编码演示
查看>>
docker常用命令详解
查看>>
jQuery技巧大放送
查看>>
字符串转换成JSON的三种方式
查看>>
Hive时间函数笔记
查看>>
clojure-emacs-autocomplete
查看>>
一个自己写的判断2个相同对象的属性值差异的工具类
查看>>
10 华电内部文档搜索系统 search03
查看>>
[HIHO1149]回文字符序列(dp)
查看>>
[HDU1402]A * B Problem Plus(FFT)
查看>>
[CF803C] Maximal GCD(gcd,贪心,构造)
查看>>
逆时针旋转的矩阵变换
查看>>
第10周15/16/17
查看>>
【数据库】SQL两表之间:根据一个表的字段更新另一个表的字段
查看>>
四六级作文常见错误解析(转载)
查看>>
Tomcat
查看>>
./是当前目录 ../是当前的上一级目录。上上级就是../../一般绝对路径时候常用...
查看>>
linux支持FTP和SFTP服务【1】
查看>>
树的递归与非递归遍历方法
查看>>