QTP对象识别的核心技术
:lol 在些先声明,如果触犯到了HP的利益,实属无心。迫于QTP对自定义控件的识别局限,和项目的需要,无奈之下对QTP做了全面的体检,安装目录下的每个文档都研究了一遍,只为了找出QTP识别自定义控件的根本方法,经过一些努力,有所收获,在些拿来和大家分享一下,也要感谢陈能技大哥的那篇文章:QTP对.NET自定义控件的扩展。
其实QTP的对象识别核心思想,分成两种,一种是封装好的DLL,另一种是XML标记语言描述,这两种文件里面都是封装的一些标准控件,各种插件安装后也是如此,QTP先会读取这些文件,然后会把它里面的对象类别加载到一个文件,每次QTP启动的时候,根据选择的ADD_IN去加载控件支持,在录制和回放脚本的时候拿这些对象属性去对比获得的对象属性,如果属性和方法相同则能识别,介于这个思想,我们就不用再对QTP的插件保持它的神秘感了,对于9.5以下的版本,QTP安装插件都需要插件有权限,所以我们其实可以在QTP自带的对象描述文件夹中,把没有权限的插件的对象描述COPY进去,或者也可以自己开发插件,然后对QTP的文件进行修改就行了,而对于自定义的控件,我们也可以在XML文件里面增加或修改控件描述,让QTP识别它,就说这些吧,还有些具体的技术细节没有搞清楚,等都OK了再进行补充。
[ 本帖最后由 Robel.Yi 于 2008-10-31 10:44 编辑 ] 大家你研究得比较深啊,我现在还在为回放顺利努力中,不过,先顶一下。。偶也想知道。。 :P :P 这个我倒没去研究,不过它封装的技术应该很强才对,难道我们能添加一个自定义的插件么? QTP它不会完全封装的,必须要提供扩展,这样才能让它更灵活。
加一 QTP录制时对对象识别的过程
当录制时,QTP将查看要录制的对象并将其作为测试对象进行存储,确定该对象符合的测试对象类,如,标准Windows、对话框、WEB按钮等。然后对于每个测试对象类,QTP都有一个始终要记住的强制属性的列表,当录制对象时,QTP始终记住这些默认的属性值,然后“视图”页面上其余的对象、对话框或其他父对象,以检查该描述是否足以唯一标识该对象,如果不足以进行唯一标识,还可以通过添加辅助属性以及顺序标识符,以创建唯一的标识。然后运行时,拿这些标识去对比运行时对象类,属性完全匹配,则能识别对象。 除了“强人”,我还有更贴切的词语形容你吗?!:lol 原帖由 sogoc 于 2008-10-31 10:34 发表 http://bbs.51testing.com/images/common/back.gif这个我倒没去研究,不过它封装的技术应该很强才对,难道我们能添加一个自定义的插件么?
提供一个PPT文件给大家参考一下. 碰到大牛贴,继续关注中。。。。 我觉得真正的核心技术应该是楼主所说的两种方式下更深层次的一些东西吧,比如DLL,它是通过何种原理来判别对象的,可能会用到HOOK技术;关于XML,它又是如何根据你添加的属性来得到它的属性值等等。。。 感谢7楼兄弟的分享 最关键的一点就是你咋让qtp加载你想要的dll?这层窗户纸还是没捅破-。-! 这些细节怕就要有人总结了.涉及知识广呀 新人,正在学习中,顶一下 好文,学习中 还说什么,顶一下吧. 哇……学习中,继续关注!! 我觉得真正的核心技术应该是楼主所说的两种方式下更深层次的一些东西吧,比如DLL,它是通过何种原理来判别对 ...
lantianwei 发表于 2008-12-9 16:31 http://bbs.51testing.com/images/common/back.gif
同感啊 不错,学习了 怎么就没了下文了呢? 学习中,继续关注
页:
[1]