`
terrypang
  • 浏览: 3020 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

RFT Best Practices - 3. 对象查找

阅读更多

如何灵活查找窗体内的对象呢?和查找窗体类似,可以使用这些对象特有的属性,依照一定的查找逻辑进行处理。下面是一个典型的查找方法,以此为例进行说明:

    public TestObject getObject(ArrayList<Property> v) {

        rootTO.waitForExistence(waitMaxTime, waitCheckInterval);
        TestObject returnObject = null;
        TestObject to[] = null;
        double timeNow = System.currentTimeMillis() / 1000;
        double endTime = timeNow + waitMaxTime;
        v.add(new Property("showing", "true"));
        while (returnObject == null && timeNow < endTime) {
            to = rootTO.find(atDescendant((Property[]) v.toArray(new Property[0])));
            if (to.length > 1) {
                 throw new AmbiguousRecognitionException("Find more than one object.");
            }
            if (to.length == 1) {
                returnObject = to[0];
            } else
                sleep(waitCheckInterval);
            timeNow = System.currentTimeMillis() / 1000;
        }
        return returnObject;
    }

上面的方法根据传入的参数集合对当前窗口中的所有对象进行查找。和之前的窗体查找一样,最好显示的添加showing=true参数,因为在Swing程序的运行过程中,内存中会对GUI元素进行缓存,可能一个界面消失了,但它还在内存中,等待着随后被显示。这样一来,就需要这个参数过滤到所有未被显示的GUI元素。在实际使用过程中,可以使用如下的方法进行调用: (调用前使用RFT的对象查看器确定待查找对象的唯一属性)

 

protected WButton getButton(String name) {
        ArrayList<Property> v = new ArrayList<Property>();
        v.add(new Property(".class", "javax.swing.JButton"));
        v.add(new Property("accessibleContext.accessibleName", name));
        TestObject to = og.getObject(v);
        if (!Utility.exists(to))
            throw new ObjectNotFoundException();
        else
            return new WButton(to);
    }

 

 

与窗口处理一样,如果某些参数需要使用正则表达式处理,可以使用下面的方法:

    protected WListBox getList(String label) {
        RegularExpression exp = new RegularExpression(".*JComboBox$|.*JList$", false);
        ArrayList<Property> v = new ArrayList<Property>();
        v.add(new Property(".class", exp));
        v.add(new Property(".priorLabel", label));
        TestObject to = og.getObject(v);
        if (!Utility.exists(to))
            throw new ObjectNotFoundException();
        else
            return new WListBox(to);
    }

在对象查找过程中,可能需要各种不同的查找逻辑。例如,如果对象可能存在也可能不存在,在查找的时候就不需要等待并反复查找,这时候,可以使用如下的方法:

    public TestObject getObjectWithoutWait(ArrayList<Property> v) {
        rootTO.waitForExistence();
        TestObject returnObject = null;
        v.add(new Property("showing", "true"));
        TestObject to[] = rootTO.find(atDescendant((Property[]) v.toArray(new Property[0])));
        if (to.length > 1) {
            throw new AmbiguousRecognitionException(
                    Find more than one object.);
        }
        if (to.length == 1) {
            returnObject = to[0];
        }
        return returnObject;
    }

 

有时候,界面上有多个具有相同属性的对象,只能通过他们的编号来区分他们;有时候需要以某个确定对象为根来进行查找;有时候需要查找直接子对象而不是所有子对象,等等。并且,这些逻辑之间也存在排列组合的情况,实际使用中可以根据自身需要灵活处理。这些方法都是对上面基本方法的扩展,大家可以尝试自己来实现。

 

 

 

 

 

 

2
0
分享到:
评论

相关推荐

    Python库 | rft-core-1.3.3.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:rft-core-1.3.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    tcpdump-3.4-5.i386.rpm

    Linux作为网络服务器,特别是作为路由器和网关时,数据的采集和分析是必不可少的。所以,今天我们就来看看Linux中强大的网络数据采集分析工具——TcpDump。 用简单的话来定义tcpdump,就是:dump the traffic on a ...

    RFT8.0安装手順.xls

    RFT8.0安装手順.xls RFT8.0安装手順.xls

    nrpe-3.0.1.tar.gz

    3. **兼容性提升**:NRPE 3.0.1支持多种操作系统,包括常见的Linux发行版和Unix变种,这使得它可以在多样化的IT环境中部署和使用。 4. **插件管理**:NRPE允许用户自定义和安装各种Nagios插件,这些插件可以检查...

    RFT.rar_....rft_Destined_RFT

    This paper presents a variant of the Discrete Fourier Transform (DFT)3 that is particularly destined for the implementation in embedded applications, which are characterized by limited resources in ...

    RFT使用手册+.docx

    3. **合并多个测试对象地图**:用户可以创建和合并多个测试对象地图,适应复杂的应用场景,使得脚本编写更加灵活。 4. **现实相关脚本**:RFT支持在脚本中插入验证点,以检查对象在测试过程中的状态,确保应用程序...

    itext-rtf-2.1.7

    3. **邮件合并**:在批量生成个性化信件或文档时,利用iText RFT将模板与动态数据结合。 4. **PDF与RTF互转**:在需要在PDF和RTF之间进行格式转换的场景下,iText提供了便利的解决方案。 使用iText RFT时,开发者...

    基于GPU的RFT算法并行化.pdf

    基于GPU的RFT算法并行化 本文介绍了一种基于GPU的RFT算法并行化策略,以解决RFT算法在计算机上的低效性问题。RFT算法是一种广义的MTD算法,可以沿着目标径向运动轨迹进行相参积累。但是,RFT算法的计算量非常大,...

    RFT ITCL 框架 ibm.jar

    2. **对象识别**:RFT可以自动识别应用程序的UI元素,将其映射为可测试的对象。这使得测试脚本可以针对这些对象执行操作,如点击按钮、填写表单等。 3. **脚本编写**:使用ITCL语言编写测试脚本。脚本中包含了测试...

    RFT入门教程初学者必备

    ### RFT入门教程知识点详解 #### 一、RFT简介与功能概述 - **RFT(Rational Functional Tester)**:是由IBM Rational开发的一款强大的自动化测试工具,主要用于功能测试、回归测试以及验证软件应用程序的功能性。 ...

    globus建议安装文档

    5. RFT(Reliable File Transfer):提供可靠的数据传输功能。 6. Security Components:包括证书颁发机构(CA)、MyProxy等,保障网格环境的安全性。 二、准备工作 在开始安装前,确保具备以下软件: 1. Globus ...

    RFT7750中文版规格书.pdf

    RFT7750中文版规格书.pdf

    IBM RFT使用

    RFT 支持对象级别的测试,能够记录和回放测试脚本,适用于Java和.NET平台上的应用程序以及Web应用。以下是RFT的一些核心特性和使用方法: 1. **脚本创建与回放**: - RFT通过记录应用程序的用户交互来生成测试脚本...

    RFT ibm.jar classgenerator

    自动化测试RFT,IBM介绍说要一个ibm.jar,但是不太好找,存这儿吧。。 (不是破解用的,是RFT测试框架工具)

    网格安装(Globus toolkit 4)

    使用rpm包安装JDK 6 Update 3。 ```bash rpm -ivh jdk-6u3-linux-i586-rpm.bin ``` ##### 7.2 解压Ant 将下载的Ant压缩包解压到适当的位置。 ```bash tar xzf ant-*.tar.gz ``` ##### 7.3 拷贝JUnit.jar 如果...

    RFT识别疑难dojo对象自动化脚本

    3. **使用RFT的JavaScript支持**:RFT支持在脚本中嵌入JavaScript,可以直接执行Dojo命令。这使得你可以直接与Dojo对象交互,例如通过JavaScript调用Dojo方法来触发组件的行为。 4. **对象存储和重用**:在自动化...

    itext-rft jar包 itext jar包 itext

    这个库的最新版本包含了对RTF(Rich Text Format)的支持,这就是所谓的iText RFT JAR包。RTF是一种跨平台的文本格式,能够保存丰富的格式化文本,包括字体、颜色、图像等元素。在iText中添加RTF支持意味着开发者...

    RFT相关资料的总结

    3. **强大的脚本编辑**:RFT使用Java或VBScript作为脚本语言,提供丰富的API,允许用户自定义复杂的测试逻辑。此外,它还具备强大的调试功能,方便定位和修复脚本错误。 4. **数据驱动测试**:RFT支持数据驱动测试...

    IBM RFT 文档2IBM RFT 文档2IBM RFT 文档2IBM RFT 文档2

    3. **智能图像识别**:RFT具备图像匹配和图像识别功能,可以用于处理那些无法通过标准对象识别方式操作的复杂界面元素。 4. **数据驱动测试**:RFT支持数据驱动测试,可以从外部数据源获取输入数据,实现测试用例的...

Global site tag (gtag.js) - Google Analytics