RFT

RFT自动化常见动作移植方法

关键字:

RFT、简单动作、常见类、移植

摘要:

本文记录了利用Rational Functional Tester(以下简称RFT)编写WEB自动化中,一些常见动作的简单类和控件查找的基础方法,比如单击、双击、下拉框选择、查找表格内容等,对于初接触RFT的人员掌握页面自动化提供最基本的方法。

1     RFT介绍

IBMRational Functional Tester是由IBM推出的针对Java,.Net和Web应用程序的自动化测试工具,拥有功能强大的编辑器并支持多种脚本语言,还集成了ScriptAssure 技术、模式匹配功能及数据驱动,以增强测试脚本的灵活性。借助这一工具,测试人员可以轻松地录制或编写脚本来进行自动化测试,极大地提高了测试效率。

建议大家在看此文之前先理解RFT自动化三层框架,及每层的具体作用,这样在看动作实现及控件查找时会更快理解。

2     RFT API

TestObject类继承于java.lang.ObjectTestObject类包含一个参考对象,可以是直接定义参照对象。在RFT ObjectMap中,由ObjectManager来维护mapptestobject对象,ObjectManager是通过某个识别算法将Map中的对象与被测试软件中的对象进行一一对应的。

下面列出实现一些常见的API接口:

适用情况及实现的接口

继承类

对象

GuiTestObject

所有测试对象的基础类,适用于几乎所有的图形化控制,并实现了IGraphical接口

TestObject

Button/dialog/link

/document/form/

html/image/label

StatelessGuiSubitem

TestObiect

实现了接口IGraphical、IGraphicalSubitem

GuiTestObject

Table、frame

TextGuiTestObject

实现了接口IGraphical、ISubitem

GuiTestObject

Text

SelectGuiSubitemTestObject

实现了接口IGraphical、IGraphicalSubitem、ISubitem、ISelect

GuisubitemTestObject

List

在RFT 中一个非常重要的根接口是 IGraphical 接口,它定义了针对GUI元素的所有标准操作,这里的标准操作指的是常用的方法,如click,doubleclick,select等。下文我们即将重点介绍标准操作。

 

3     控件查找及简单动作

3.1     按钮单击

比如下图中的应用按钮。在测试用例中需要用到点击“应用”按钮,需要实现两个步骤:1.查找页面中的应用按钮控件;2.点击此应用按钮。

元素控件层(appobjects目录下的命名文件)返回按钮控件,使用上文中提到的最常用的类GuiTestObject,然后对控件的属性值进行查找。利用RFT中的“打开测试对象检查器”,鼠标放到WEB页面需要查找的按钮上,就会显示控件的层次结构,根据属性值定义唯一确定的参数,这样才能准确返回需要查找的控件。

元素控件层中定义的返回函数实例如下:

public GuiTestObject Apply_Button() throwsException

    {

       TestObject Obj = new MyObject("button", "value", "应用").FindObj();

       return  (GuiTestObject)Obj;

    }

操作层对返回的按钮控件做单击操作click:

DutCom.Apply_Button().click();

此时就实现了先查找此页面的“应用”按钮,再单击此按钮的动作操作。

3.2     下拉框选择

在测试用例中需要用到下拉框的选择,比如下图需要在绑定接口下拉框中选择WAN3选项,需要实现两个步骤:1.查找页面中的绑定接口下拉框控件;2.在下拉框中找到“WAN3”选项。

元素控件层返回下拉框控件,使用上文中的类SelectGuiSubitemTestObject,根据测试对象检查器定义控件的属性值"name"为 "ipsec_interface_type ",这样就可以唯一查找到此控件。

元素控件层中定义的返回函数实例如下:

public SelectGuiSubitemTestObject IPSec_port_select() throwsException

{

    TestObject Obj = newMyObject("select", "name", "ipsec_interface_type").FindObj();

    return  (SelectGuiSubitemTestObject)Obj;

}

操作层对返回的按钮控件做选择操作select:

IPSeccom.IPSec_port_select().select("WAN3");

此时就实现了先查找此页面的“绑定接口”下拉框,再选择WAN3动作操作。

 

3.3     单选/复选框选择

在测试用例中需要用到单选框的点击,比如下图需要点击“启用IPSec功能”,需要实现两个步骤:1.查找页面中的启用IPSec功能控件;2.点击此单选框控件。

元素控件层返回单选框控件,使用上文中的类GuiTestObject,根据测试对象检查器定义控件的属性值类型为"checkbox",再定义唯一确定的参数,这样就可以唯一查找到此控件。

元素控件层中定义的返回函数实例如下:

public GuiTestObject ResetEnable_Button() throwsException

{

    TestObject Obj = newMyObject("checkbox", "value", "on").FindObj();

    return  (GuiTestObject)Obj;

}

操作层对返回的按钮控件做选择操作click:

IPSeccom.ResetEnable_Button().click();

此时就实现了先查找此页面的“启用IPSec功能”单选框,再对此单选框点击的操作。复选框和此类似,此处不予赘述。

 

3.4     文本框输入

在测试用例中需要用到文本框输入,比如下图需要输入 “安全策略名称”,需要实现两个步骤:1.查找页面中的安全策略名称控件;2.在此控件中输入文本信息。

元素控件层返回文本框控件,使用上文中的类TextGuiTestObject,根据测试对象检查器定义控件的属性值类型为"text",再定义唯一确定的参数,这样就可以唯一查找到此控件。

元素控件层中定义的返回函数实例如下:

public TextGuiTestObject Getipsecpolicyname_Text() throwsException

{

    TestObject Obj = newMyObject().IE();

    Obj = newMyObject(Obj,"text","name","ipsec_policy_name").FindObj();

    return (TextGuiTestObject)Obj;

}

操作层对返回的按钮控件做选择操作setText:

IPSeccom.Getipsecpolicyname_Text().setText(PC2);

此时就实现了先查找此页面的“安全策略名称”文本框,再对此文本框输入文本信息的操作。

### 关于Revit RFT 文件的用途 Revit 中的 `.rft` 文件是一种模板文件,通常用于存储特定类型的族(Family)。这些族可以是门窗、家具或其他建筑构件。`.rft` 文件的主要作用是在创建新的族时提供预定义的设置和结构,从而简化设计过程并提高效率。 以下是关于 `.rft` 文件的一些重要说明: 1. **家族模板的作用** 家族模板(`.rft` 文件)为用户提供了一个起点,其中包含了必要的参数、类型以及几何图形的基础框架。这使得设计师能够专注于自定义部分的设计,而无需从头配置基础环境[^3]。 2. **常见用途** - 创建标准的建筑组件,例如门、窗、柱子等。 - 提供行业标准或公司内部的标准设定,确保模型的一致性和合规性。 - 减少重复工作量,因为许多通用设置已经预先配置好。 3. **加载与应用** 用户可以通过 Revit 的界面打开 `.rft` 文件来创建新族。一旦完成编辑,该族可以保存为独立的 `.rfa` 文件以便后续使用或共享[^4]。 ```csharp // 示例代码展示如何通过API访问文档中的族实例 public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { UIApplication uiApp = commandData.Application; UIDocument uidoc = uiApp.ActiveUIDocument; Document doc = uidoc.Document; // 获取当前选中的元素集合 ICollection<ElementId> selectedIds = uidoc.Selection.GetElementIds(); foreach (ElementId id in selectedIds) { FamilyInstance instance = doc.GetElement(id) as FamilyInstance; if (instance != null && instance.Symbol.Family.Name.Contains(".rft")) { TaskDialog.Show("Info", "This is a family created from an .rft template."); } } return Result.Succeeded; } ``` 此代码片段展示了如何利用 API 来检测某个族是否来源于 `.rft` 模板,并弹出对话框通知用户。 --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值