请教关于QTP对象识别原理的问题。
请教一个QTP识别原理的问题描述:
我学习QTP大半年时间了,对QTP是如何识别对象的原理仍然很模糊.QTP的识别过程,应该是通过调用add-in插件,将应用的对象属性与add-In的控件‘类属性’做映射,将应用的QTP对象转换成add-in对象,这样就可以使用对象类的方法和属性了。我理解这就是QTP的AOM、OLE、关键字驱动等等的由来,不知我这样理解是否有问题。
问题:
假如以上是对的,那么QTP中肯定存在一个 QTP对象 与 add-in对象‘映射的切入点’。这部分知识我可以从哪里了解,请不吝赐教,谢谢~ 你说的应该是QTP的实现原理,但对象识别的话,不同的语言,开发平台会有不同,.NET可能会用到反射,delphi应该是打桩来识别的~
有兴趣的话,可以自己写个东西来识别IE,一般识别是整个IE就是winobject, 如果你可以实现识别里面的对象,那么着就是识别原理,不过这个还是挺有深度的~ 回复 1# xjwldlover
你是不是想得太复杂了?
而且你的描述我有点没有看明白, 比如“应用的QTP对象”何解? 还有OLE和关键字驱动怎么也能扯在一起?
我对QTP对象识别的理解是这样的。 被测试产品的GuI对象就是所谓的“native object”, QTP对“native object”封装了, 提供了一个所谓的“QTP object”。
一般我们直接操作“QTP object, 但是QTP也提供接口你能“访问”native object, 比如调用javaobject的方法, 或者获取dom对象的属性等。 但一般不建议这么做, 因为 “QTP object”具有更容易使用, 更有效率的接口,比如其childObjects就是一个非常有用的方法。
至于”映射是如何完成的“, 对于不同类型的GUI, 肯定有不同的实现机制。 最笨的方法, 就是遍历Native GUI element tree来匹配。 以html为例, 底层就是Dom tree,如果你熟悉Dom的接口, 那么你也完全写一个类似QTP object的接口的封装Dom对象的”自动化测试工具“, 其实Watir就是这么干的, 你可以去看看Watir的源代码。 当然, 为了提高识别效率, 或许QTP用了一些特殊的hook也说不定, 但除非你对此有特殊的兴趣, 对于我们测试开发人员来说, 不用探究其细节了。 感谢您的回答~
首先OLE、关键字驱动、AOM,我自己理解他们都是使用对 对象的引用。
ole对象连接嵌入,是使用dll\ocx\exe来获取对象、方法、属性;
关键字驱动我理解是qtp调用add-in插件中的对象,将对象的方法、属性封装,映射给QTP对象,通过操作QTP对象来操作应用对象,映射结果就是我们看到的Object Identification;
AOM 就是把QTP的对象也做成ole插件供其他程序调用,控制。
他们本质上都是对对象的引用,所以我把它们关联一起理解了。
了解映射的目的:系统存在大量被开发人员修改的的控件,QTP原来是识别成treeView,开发人员修改属性后,却被QTP识别为WinObject,无法使用对象的方法。如果是web程序还比较好整、肯定能找到对象改变的源头,直接使用dom调用原始对象。但如果是window标准控件,.net控件,应该就不好弄了(写到这里,突然感觉我是想当然了,WEB页面既然有DOM这样的标准,。net和其他应该也有,也能通过自定义对象来解决,这块以后需要多接触~)。
这么一想,觉得更应该把应用对象(插件对象) 与 QTP对象的映射方式搞清楚了
fs
儿孙自有儿孙福,莫为儿孙做远忧去濠锋会又赢了几百快。不错 民办文凭 www.zhinangedu.com 优享时尚 www.uugoods.net 不锈钢席型网www.buxiugangsw.com 棋牌游戏 www.qianlei.cc 回复 4# xjwldlover
我还是不明白最后你是怎么解决这个问题的,就是你说的开始是treeview后来qtp一识别就变成了winObject这个问题。因为我的软件是flex开发的,有时候会被qtp识别为FlexObject。。。 没接触过 我还是不明白最后你是怎么解决这个问题的,就是你说的开始是treeview后来qtp一识别就变成了winObject这 怎么解决这个问题的,就是你说的开始是treeview后来qtp一识别就变成了winObject这 学习了
页:
[1]