51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 3536|回复: 7
打印 上一主题 下一主题

[讨论] QTP如何驱动它捕捉的对象

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-1-17 01:29:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,QTP只是捕捉,标识对象,但是他是通过什么机制可以引用到这些对象的呢?如IE中的text筐,QTP捕捉到他后只是标识它,然后就可以引用到text中的一系列动作与了.这是什么原理呢,难到是ms有提供这方面的api给QTP吗? 使用QTP已经有一段时间了,对这个原理还是不怎么了解,请知情的大虾多多指教.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-1-17 09:40:30 | 只看该作者
可以查查一些博客文章,看看QTP的录制原理
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-1-17 11:23:04 | 只看该作者
我猜是handle,不过MS肯定也有底层的支持.
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-1-17 23:07:32 | 只看该作者
在Windows中每个窗口、每个控件都有唯一的句柄,但是每次运行程序,句柄都是变化的,因此不能根据句柄来识别对象。但是大部分对象的类名、名称等属性是相对稳定的,因此可以根据这些属性的组合来识别控件。

Windows API提供了一系列与程序窗口、控件打交道的函数,例如user32.dll中就封装了窗体和控件识别对象FindWindow、FindWindowEx等函数,还有鼠标操作、消息处理等函数,这些都可以用于获取运行中的程序窗体、控件的属性,发送消息触发控件的操作。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-1-18 10:56:53 | 只看该作者

回复 4# 的帖子

是驱动啊,不是定位,
定位我当然知道要根据属性,枚举对象判断属性匹配,
楼主问的是怎么驱动,定位到对象之后根据什么来让按钮按下等等.
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-8-25 10:16
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
    发表于 2008-1-18 11:49:08 | 只看该作者
    我就不明白了
    别乱啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2008-1-21 13:15:13 | 只看该作者
    驱动? 无非是几种 点击, 键盘输入, 这些事件都能直接触发 当找到相应的对象以后 调用windows相应的dll里面api 不行了?
    你鼠标按下左键 难道不也是调用dll的么? 所以驱动不难 难得是 如何找到对象。。 应该 过于底层了。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2008-1-22 14:39:47 | 只看该作者

    回复 7# 的帖子

    是吗?对一些加密的对象要求访问者是OWNER,那你能简单的使用API吗?手写代码的话一般做法是注入到对象的进程内再使用所谓API和自己的代码等等,这也是很多黑客利用来控制别人电脑的技巧,但是程序变了的话可能又得修改大量代码,而QTP可以做到通用,这才是想要理解的。怎么定位不难,难的是如何驱动,QTP做的实际上是跨进程操控其他程序的工作,这也是为什么插件要另外卖钱的原因..

    至于定位,直接回调几个枚举函数就可以遍历掉系统的所有窗体了,要拿到窗体的身份标识HWND还不简单?如果你能根据HWND拿到它的属性的话,怎么判断怎么匹配都是轻而易举的事情,纯粹是遍历过程中的匹配与返回的过程。难的是你如何拿到这些数据去匹配,你可以拿TEXT来匹配,但是你如何拿到对象的TEXT?这就是驱动的问题了,拿到句柄怎么去获取他的TEXT。但是QTP没那么简单,我怀疑它甚至利用了反射机制,类似于JAVA的反射机制,可以在运行时的对象反射会指定的结构对象,再访问她内部的方法去实现指定的操作。

    [ 本帖最后由 mythxhg 于 2008-1-22 15:13 编辑 ]
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-6-5 02:41 , Processed in 0.068593 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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