walker1020 发表于 2006-8-31 10:32:39

QTP无法录制某些控件的操作的解决方法

经常有朋友问:QTP无法识别某些自制 的控件或无法录制某些控件的操作,我怎么解决这个问题? 我想解决方法有下面几个:

1, 添加相应的Add-in是解决此类问题的第一选择,如果有相应的Add-in的话。例如如果是测试 Java 类的程序,就要加载 Java Add-in。
    你安装好 QTP后,有三个Add-in ( ActiveX、Visual Basic和 Web)就被装载了。除此以为,QTP 8.2 版本还可以装载的 Add-in 有QuickTest ProfessionalJava 6.5 Add-in 、QuickTest Professional Oracle 6.5 Add-in 、QuickTest Professiona Siebel 8.0Add-in 和 QuickTest Professional Terminal Emulator 8.0 Add-in。 (每个版面的QTP可以加载的 Add-in 可以在相应的QTP_Install_Guide.pdf 和 Main_Users_Guide.pdf 中找到。)

2,把不能识别的对象设置为虚拟对象(Virtual Object)
   依次点击 QTP 的 “Tools” ---> "Virtual Objects"--->"New Virtual Object...", 就会出现 Virtual Object Wizard 对话框,你根据Wizard的指引,就可以把添加一些支持的不好的控件设置成虚拟控件,也就添加到对象库了。
   
   在QTP 8.2 添加虚拟对象的具体操作步骤是:
       1,依次点击 Tools ---> Virtual Objects ---> New Virtual Object…,打开虚拟对象向导,点击Next;
       2,选择Class为button,点击Next;
       3,点击标记对象按钮;
       4,   选择要操作的对象区域,点击Next (对象区域就是你要操作的那个对象);
       5,    默认,点击Next;
       6,   完成。
   
    添加虚拟对象后可以解决问题实例有:
   http://www.17testing.com/bbs/viewthread.php?tid=976&extra=page%3D1&page=1
   http://bbs.51testing.com/thread-60897-1-6.html

3,把QTP不能录制的对象手工添加到object repository, 然后写代码实现 需要的操作。详细信息请参考:
    http://bbs.51testing.com/thread-45142-1-6.html中的#7   

4,针对特殊问题有特殊的解决方法。如果不能识别的控件是用VC做的,那么你可以自己写一个动态链接库,然后让QTP去调用它。至于QTP 如何调用动态链接库,请看附件。

如果谁还有好方法,请也说出来。大家一起讨论一下。我坚信这里问题一定能得到解决!胜利一定是属于我们的!sdlkfj3 sdlkfj3 sdlkfj3

[ 本帖最后由 walker1020 于 2007-2-1 23:39 编辑 ]

walker1020 发表于 2006-8-31 10:38:40

补充一点

Object Spy 是 QTP 用來查看、监视 GUI object 属性的工具。通过Object Spy 你是无法把对象添加到 对象库的。

ztcreative 发表于 2006-8-31 10:39:18

强烈支持斑竹!!!

小宝2006 发表于 2006-8-31 10:50:29

不错,支持中........

walker1020 发表于 2006-8-31 11:31:40

另外一种解决方法

曾经有朋友问:“用Object Spy时识别到是ActiveX 对象,在Add Object时也能识别是ActiveX对象,并且识别出来是windows media player控件,但就是不能加到对象库。”

针对此问题,如果需要把对象添加到对象库里面去,我提供另外一种解决方法:
依次点击 “Tools" ---> "Object Repostory...", 在出现的Object Repository 对话框中,按下 Add Objects 按钮,将应用软件的 GUI Object 加入到 Object Repository中 就可以了。具体操作请看附件的《什么是 Keyword-Driven Testing 》。 在此向 oldsidney 表示感谢,因为是他的文章启发了我,让我想到了这个方法。 大师就是大师呀,不服不行呀。呵呵!sdlkfj3

qd_pudding 发表于 2006-8-31 16:36:16

walker1020

如果用这种方法去识别的话只能在当前脚本有效,如果打开一个新的,就没有了,还必须实际识别一下
所以还是应该通过这种方式来识别的Tools ---> Virtual Objects ---> New Virtual Object

walker1020 发表于 2006-8-31 19:38:07

原帖由 qd_pudding 于 2006-8-31 16:36 发表
如果用这种方法去识别的话只能在当前脚本有效,如果打开一个新的,就没有了,还必须实际识别一下
所以还是应该通过这种方式来识别的Tools ---> Virtual Objects ---> New Virtual Object

谢谢qd_pudding的提醒和补充! 虚心向你学习!

tian 发表于 2006-9-1 14:12:12

我现在也被这问题困扰,谢谢,我按以上所说的方法尝试一下。

higkoo 发表于 2006-9-1 22:24:01

我也发过一些类似的贴子。
都是关于QTP无法识别的问题。
今天没在公司,看到你的贴子,很有想法。
只可惜不能实践,等到周一我一定试试。。

higkoo 发表于 2006-9-5 14:18:53

出错了

我用New Virtual Object...新建一个表格,36行9列。选中区域后点下一步,最后完成出现一个提示:

This operation cannot be performed.For further help please contact support.

点确定后,再点到QTP就没有反应了。
用Alt+Tab时,QTP也没有在列表中。

请问可能原因是什么啊?

gongliang 发表于 2006-9-8 17:39:14

谢谢版主!

按照版主所讲的,的确是有效!
我是测试java应用程序的时候遇到了一些这样的问题!一般情况下:JtextFiled,JTree这样的控件不能识别!一直提示:“对象属性不能匹配”,设置成虚拟对象以后的确可以!但是还是无法添加到对象库中,“qd_pudding”说的对!

jinny 发表于 2006-9-12 10:47:49

按照Tutorial_oldsidney_cn.pdf 练习 QTP时,遇到问题!

上网助手等插件都卸载掉了,在TOOLs> Option > WEB>Page/Fram Options.., 选择 Different object descriptions,又试过一次还是录制不了文本框、按钮。我也试过用object SPY和Virtua objectl了,可是还是不行呀!
各位高手,请指点。不知道是不是还有什么会影响其录制呢?

higkoo 发表于 2006-9-12 20:25:02

值得学习

好文章,值得推荐和学习!

这些方法和可能是初学者,逐步深入时可能会遇到的问题。

在这里可以找到解决方法,顶一顶,看了不顶就吃亏了。

denty 发表于 2006-9-26 17:07:45

我还是录制不了控件

我按班主的方法,装了 QuickTest ProfessionalJava 6.5 Add-in 、QuickTest Professional Oracle 6.5 Add-in ,但是,录制脚本后再运行,还是会出现无法识别控制的提示,麻烦给于指导,十分感谢,。

[ 本帖最后由 denty 于 2006-9-26 18:01 编辑 ]

scmona 发表于 2006-9-26 22:53:28

好贴,支持ing

walker1020 发表于 2006-9-27 15:12:54

原帖由 denty 于 2006-9-26 17:07 发表
我按班主的方法,装了 QuickTest ProfessionalJava 6.5 Add-in 、QuickTest Professional Oracle 6.5 Add-in ,但是,录制脚本后再运行,还是会出现无法识别控制的提示,麻烦给于指导,十分感谢,。

根据错误提示,这应该是脚本的某行语句有问题。 QTP运行到脚本的哪一行时出现这个RunError 的错误信息?最好把你的脚本发送上来,这样我们好帮助你解决问题。

提示:我怀疑出错的这行代码是你自己写的吧。如果你用到了某个函数,你是不是函数的参数没有写对? 还是漏写了括号?

denty 发表于 2006-9-29 15:43:28

我的脚本如下:

denty 发表于 2006-9-29 15:45:08

麻烦大家帮我看一下,真的很感谢/我看是日期的选择框有问题,不知道为什么不能运行通过。

denty 发表于 2006-9-29 15:51:58

上面可能看不清楚,这个才清楚:
Browser("用户登录").Page("用户登录").WebEdit("loginName").Set "test"
Browser("用户登录").Page("用户登录").WebEdit("loginPassword").SetSecure "451cc72e23ede933bdb9747662e5"
Browser("用户登录").Page("用户登录").Image("login").Click 20,24
Browser("用户登录").Page("管理平台框架123121.0").Frame("left").WebElement("定购关系 查询").Click
Browser("用户登录").Page("管理平台框架123121.0").Frame("left").Link("包月业务定购关系查询").Click
Browser("管理平台框架123121.0").Page("管理平台框架123121.0").Frame("main").WebEdit("phoneNum").Set "13929550934"
Browser("管理平台框架123121.0").Page("管理平台框架123121.0").Frame("main").WebButton("查询").Click
Browser("管理平台框架123121.0").Page("管理平台框架123121.0").Frame("top").Link("使用记录查询").Click
Browser("管理平台框架123121.0").Page("管理平台框架123121.0").Frame("left").WebElement("使用记录 查询").Click
Browser("管理平台框架123121.0").Page("管理平台框架123121.0").Frame("left").Link("使用业务记录查询").Click
Browser("管理平台框架123121.0").Page("管理平台框架123121.0").Frame("main_2").Image("显示日历").Click
Browser("管理平台框架123121.0").Window("日期选择 -- 网页对话框").Page("日期选择").WebElement("1").Click
Browser("管理平台框架123121.0").Page("管理平台框架123121.0").Frame("main_2").WebEdit("phoneNum").Set "13929550934"
Browser("管理平台框架123121.0").Page("管理平台框架123121.0").Frame("main_2").WebButton("查询").Click
Browser("管理平台框架123121.0").Page("管理平台框架123121.0").Frame("main_2").WebButton("查询").Click
Browser("管理平台框架123121.0").Page("管理平台框架123121.0").Frame("left").Link("退出系统").Click
Browser("用户登录").Page("用户登录_2").Sync

denty 发表于 2006-9-29 16:00:40

若,我在日期控制的不选择,直接默认,那,再次运行上面的脚步本时就没有问题。不知道是何解。
页: [1] 2 3 4 5 6 7
查看完整版本: QTP无法录制某些控件的操作的解决方法