51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6175|回复: 0
打印 上一主题 下一主题

自动化测试 - RFT系列教程5:RFT是如何识别控件的(三) TestObject的种类:Mapp...

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-24 15:50:13 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
什么是TestObject?TestObject可以被认为是一个连接点,它把RFT脚本和被测控件很好的连接起来,让用户看起来操作TestObject就好像操作被测控件一样。

RFT里面主要有两类TestObject: 一个是Mapped,另一个是Bound(也被称作Found, Registered)



Mapped TestObject

Mapped TestObject一般都是通过一些必要的属性信息来定位一个真实的被测控件,我们之前接触到的TestObject都是Mapped
一般这些属性信息都存储在TestObject Map里面,各个TestObject是以树状结构保存
比如一行脚本button().click(),RFT在执行的时候首先先从TestObject Map里面读取button的关键属性信息,然后通过这些信息寻找匹配的控件,当寻找到匹配控件并且唯一时生成相应的Bound TestObject,然后由Bound TestObject执行click操作,最后再释放掉Bound TestObject
从代码层面,button().click()相当于如下代码

  1. //通过属性信息查找控件,并生成Bound TestObject
  2. GuiTestObject buttonBTO = button().find();
  3. //执行click操作
  4. buttonBTO.click();
  5. //注销该Bound TestObject
  6. buttonBTO.unregister();
复制代码

Bound TestObject

一切不是通过TestObject Map里面的属性查找到的TestObject都是Bound TestObject
Bound TestObject才是真正联系RFT脚本和被测控件的连接点,我个人认为它应该相当于各类Proxy(后面我们谈到RFT的扩展会详细讲解Proxy)
可以直接返回Bound TestObject的方法如下: getChildren(), getMappableChildren(), getOwned(), getParent(), getMappableParent(), getOwner(), find(), getTopParent()
Bound TestObject和Mapped最大区别就是Mapped TestObject会自动unregister,但是Bound TestObject必须要手动unregister,这就像我们在写数据库相关代码的时候要时刻记的关闭connection一样,一般都会把关闭connection写在finally里面,比如:

  1. TestObject BTO = mappedObject.find();
  2. try
  3. {
  4. // 在try里面试行操作
  5. BTO.click();
  6. }catch(Exception e){
  7. // 异常处理
  8. }finally
  9. {
  10. //最后要注销该Bound TestObject
  11. TO.unregister();
  12. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-27 12:18 , Processed in 0.070548 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表