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 编辑 ]
补充一点
Object Spy 是 QTP 用來查看、监视 GUI object 属性的工具。通过Object Spy 你是无法把对象添加到 对象库的。 强烈支持斑竹!!! 不错,支持中........另外一种解决方法
曾经有朋友问:“用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
walker1020
如果用这种方法去识别的话只能在当前脚本有效,如果打开一个新的,就没有了,还必须实际识别一下所以还是应该通过这种方式来识别的Tools ---> Virtual Objects ---> New Virtual Object 原帖由 qd_pudding 于 2006-8-31 16:36 发表
如果用这种方法去识别的话只能在当前脚本有效,如果打开一个新的,就没有了,还必须实际识别一下
所以还是应该通过这种方式来识别的Tools ---> Virtual Objects ---> New Virtual Object
谢谢qd_pudding的提醒和补充! 虚心向你学习! 我现在也被这问题困扰,谢谢,我按以上所说的方法尝试一下。
顶
我也发过一些类似的贴子。都是关于QTP无法识别的问题。
今天没在公司,看到你的贴子,很有想法。
只可惜不能实践,等到周一我一定试试。。
出错了
我用New Virtual Object...新建一个表格,36行9列。选中区域后点下一步,最后完成出现一个提示:This operation cannot be performed.For further help please contact support.
点确定后,再点到QTP就没有反应了。
用Alt+Tab时,QTP也没有在列表中。
请问可能原因是什么啊?
谢谢版主!
按照版主所讲的,的确是有效!我是测试java应用程序的时候遇到了一些这样的问题!一般情况下:JtextFiled,JTree这样的控件不能识别!一直提示:“对象属性不能匹配”,设置成虚拟对象以后的确可以!但是还是无法添加到对象库中,“qd_pudding”说的对!
按照Tutorial_oldsidney_cn.pdf 练习 QTP时,遇到问题!
上网助手等插件都卸载掉了,在TOOLs> Option > WEB>Page/Fram Options.., 选择 Different object descriptions,又试过一次还是录制不了文本框、按钮。我也试过用object SPY和Virtua objectl了,可是还是不行呀!各位高手,请指点。不知道是不是还有什么会影响其录制呢?
值得学习
好文章,值得推荐和学习!这些方法和可能是初学者,逐步深入时可能会遇到的问题。
在这里可以找到解决方法,顶一顶,看了不顶就吃亏了。
我还是录制不了控件
我按班主的方法,装了 QuickTest ProfessionalJava 6.5 Add-in 、QuickTest Professional Oracle 6.5 Add-in ,但是,录制脚本后再运行,还是会出现无法识别控制的提示,麻烦给于指导,十分感谢,。[ 本帖最后由 denty 于 2006-9-26 18:01 编辑 ] 好贴,支持ing 原帖由 denty 于 2006-9-26 17:07 发表
我按班主的方法,装了 QuickTest ProfessionalJava 6.5 Add-in 、QuickTest Professional Oracle 6.5 Add-in ,但是,录制脚本后再运行,还是会出现无法识别控制的提示,麻烦给于指导,十分感谢,。
根据错误提示,这应该是脚本的某行语句有问题。 QTP运行到脚本的哪一行时出现这个RunError 的错误信息?最好把你的脚本发送上来,这样我们好帮助你解决问题。
提示:我怀疑出错的这行代码是你自己写的吧。如果你用到了某个函数,你是不是函数的参数没有写对? 还是漏写了括号? 我的脚本如下: 麻烦大家帮我看一下,真的很感谢/我看是日期的选择框有问题,不知道为什么不能运行通过。 上面可能看不清楚,这个才清楚:
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 若,我在日期控制的不选择,直接默认,那,再次运行上面的脚步本时就没有问题。不知道是何解。