`
isiqi
  • 浏览: 16052271 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

QTP一些问题的解决方法

阅读更多

以下是我经常遇到的问题:
一、无法识别控件。
二、错误回放过程未知弹出窗口。
三、加载.net插件后和TD的关联问题。
四、动态加载元素的识别问题。
五、调用外部dll的问题。
六、随机验证码的问题。

问题一,解决办法有三种:
1、更改QTP自身对某控件的识别方式,在tools——Object Identification中。在这里列出了所有QTP能识别的控件,以及控件的识别方式。你可以给他添加XY坐标进行识别。或更明显的,列表中的信息,不按名称识别,而是按ID识别。这个修改可以解决一些问题,具体的赶紧动手试试吧……
2
、使用虚拟物件,来定义一个控件,在tools——Virtual Object中。在这里可以自定义一个控件。例如在ASP的程序中,程序出错,在客户端的表现形式大部分是一样的,你可以把整个错误页面当成一个控件来识别(感觉不错)。如果加一个判断,出错后你想做什么就由你自己定了。
3、使用低级录制或鼠标录制。用Test——LowLevelRecording/AnlogRecording吧,用它录制就不需要什么设置了,他会记录你的程序控件相对屏幕的位置。用LowLevelRecording还有代码可改,用AnlogRecording动作就被封装了(维护性极差)。两者因实际环境更取其长吧……

问题二的解决过程:
关于弹出提示的问题,我当时需要情况是这样的。一个信息录入系统,由于数据量很大,查询需要一段时间。QTP回放时动作比较快,点了保存,程序还没反应过来它就进行了下一步操作。这时的操作就和录制时不一样了,程序给出一个提示,但这个提示是录制过程没有的。弹出框是一般都是POP形势(至上)的,导致QTP无法继续回放,结果就是回放失败。
解决办法有两个:
1、进行判断,当出现这个提示时,点是//取消按钮。
2、通过Tools——Recorvery Scenario Manager设置默认操作。
我最初就是用的第一种方法。写一个函数判断是否出现这个提示,如果出现就点取消然后wait(2)每个可能出现弹出框的动作后都调用一次这个函数。虽然可以解决这个问题,但回放的效率就低了,而且需要你预知提示框的信息。
当我知道了第二种方法,显然更科学^_^。它可以对所有预知甚至不知的提示进行指定的操作。
实际上,当程序出现了未预知的提示时,可能就是程序的BUG,所以使用上述办法解决工具问题时,也要考虑是否会掩盖程序的缺陷。

问题三的解决办法:
用好QTP后,会不自觉的和TD关联起来。但从TD直接启动QTP时,程序只会加载QTP自带的插件,如果你安装了其它插件(如.netjavaetc.),默认是不加载的。这会导致上传的脚本无法正确执行。解决办法很简单,去Test——Setting里进行Modify吧。从本地打开的脚本,这里不能进行Modify的。所以办法很简单,但如果不知道的话就很难了。当初为这个问题我可是废了八牛三虎之力呢……

问题四的解决过程:
当我开始改代码时,定义一个动作,然后可以生成N个动作。假设N个动作产生了N个结果,你要对这结果进行处理时,你会发现这N个结果都不能被识别:

网页上有个表格,是往数据库里加数据的。
两个表格显示在同一个页面上,左边为父表,右边为子表。
点击左表,右表显示其子项目。
结构如下:
A
├─1
├─2
├─3
└─4
B
├─1
├─2
├─3
└─4
……
思想很清晰:
添加一个父项A、选中此父项A、对其添加子项1234
添加一个父项B、选中此父项B、对其添加子项1234 ……

代码也很简单:
dim M '定义父项数
dim N '定义每个父项包含的子项数

For i=1 to M
Call
添加父项( i )
选中父项( i ) '问题就出在这里
For j=1 to bwfl step 1
Call
添加子项( j )
Next
Next

现在问题出来了,思路应该没有问题(除非这方法真的行不通),循环也是顺着思想来的。

问题是,无法实现选中的父项(最多识别到一个)。
由于此循环可以在录制过程进行,如果不改变变量名称,循环可且只可以成功运行一次。问题是这个名称都是从DataTable里获取的。
因为,在运行过程中生成的项目没有加到对象库中,无法被识别。

这个问题最后是从思想上解决的。答案是我做的是功能测试,为什么不先加父项,检查父项的功能是否正常,然后再去测子项的功能。不去改变名字,因为那没有必要。核心答案功能测试、测试功能。即对测试工具首先需要有正确的认识。
当然,这个问题可以用代码去实现,但那需要有一定的编程功底且耗时,可维护性不一定好。有需要的朋友可以去试一下,然后把你的经验也共享一下。 *^_^*

问题五,是对QTP很大的一个扩充。
对于QTP调用外部DLL的功能,由于我的编程功底不够,没有相关人士配合我,我只能望之垂涎了!
如果能调用外部DLL的话,QTP的功能就可以变得很强大。自己写的程序,自己编一些过程用QTP进行测试,我想后果很严重。真想有一次给我尝试的机会……


问题六,解决办法有4个:
1、测试的时候,让程序员把这块限制去掉,免去验证这关。
2、让程序员提供一个万能验证码,测试可以绕过这一关。
3、请程序员提供识别的方法,从获取的图片读出验证数据,再传给QTP
4、进行位图检查,将验证码分段进行图像验证。
实际上,验证码的目的就是防止用程序灌水或机器录入信息。所以有点为难我们测试了。
方法1,如果程序已在发布并有客户使用,危险性是可想而知的。方法2虽然可以解决验证这一关,但跳过了输入码与验证码一致性问题。方法3就需要程序员配合了,可能就需要调用DLL了。方法4却将图像分段,把获取的图像和已经的图像进行比对,比对通过取对应的值;这个在数字验证会好做一点,因为最多就四个图像的比对。

分享到:
评论

相关推荐

    QTP一些常用问题的解决方法

    QTP集合问题,将一些常用问题解决内容共享

    qtp9.2 License过期解决方法

    安装好qtp9.2后打开qtp会报一个过期的错误,此文件介绍解决方法

    qtp与td连接方法及常见问题解决方法

    qtp与td的连接方法及常见问题解决方法.(详细步骤)

    QTP10安装包、破解方法、安装指导、安装插件问题解决

    QTP10安装包、破解方法、安装指导、安装插件问题解决方案

    WIN7下安装QTP10.0问题集合

    WIN7系统下下安装QTP10.0出现的问题集合及解决方法

    QTP描述性编程技术集锦

    19. QTP中根据日期计算年龄的解决办法 48 20. 测试报告知多少 48 21. 调用共享文件 49 22. 识别grid中的button 52 23. How to parameterize your link 52 24. QTP中的步骤生成器 54 25. QTP感想 56 26. QTP 参数化...

    qtp问题解决

    qtp问题解决方案,也是新人知道这个是什么东西?有什么用?什么样的情况下采用这种方法的一个不错的选择

    QTP中WshShell常用方法.docx

    WshShell提供对本地 Windows 外壳程序的访问。可以通过WshShell 对象模拟键盘,向激活窗口发送键值...这些操作如果使用QTP来操作可能不是最佳方案,甚至可能QTP根本无法完成,此时就可以用WSH对象来帮助解决此类问题。

    QTP自动化测试框架设计及使用方法

    由Saffron框架改进的QTP自动化测试框架,解决Saffron中无法统一管理对象、无法识别同一页面相同对象问题,适用于Web自动化测试。

    QTP等待对象的方法

    由此,问题产生了?  解决办法:在QTP脚本中,使用循环语句等待对象出现.

    QTP对象不能识别的处理方式流程图,教你每一步如何解决对象不能识别的处理方法,

    QTP对象不能识别的处理方式流程图,教你每一步如何解决对象不能识别的处理方法,每一步分开介绍不同的现象,直到解决为止,就算是一个小白,都能根据流程图解决QTP不能识别对象的各种问题,

    QTP自动化测试进阶.pdf

    《QTP自动化测试进阶》以循序渐进的方式讲解了自动化功能测试的基础知识,结合最新版本的QTP 10的使用,深入讲解了自动化脚本的开发技术,涉及目前...以及碰到一些QTP不能识别的第三方控件、自定义控件时的解决办法。

    QTP 10.0 R6025 pure virtual function call的解决方法

    本文档是我花了接近半个月解决关于QTP 10.0 R6025 pure virtual function cal的方法!很有用!

    qtp学习与实践经验总结

    2.1 QTP的录制方法 29 2.2 QTP录制应先作录制计划 29 2.3 关于下拉菜单的更改 30 2.4 输入法对于回放的影响 32 2.5 如何修改系统时间 32 3 QTP的自定义操作 33 3.1 手工添加步骤 33 3.2 手工识别控件 44 4 多个...

    QTP疑难问题解答(不能识别对象)

    解决对象描述问题的第一步是找到差异,最简单的方法是将仓库中对象的属性值与程序中对象的属性值进行比较。(仓库中对象的属性值可在Object Repository窗口中查看,程序中对象的属性值可用Object Spy功能查看。) ...

    QTP技术集锦--总结

    19. QTP中根据日期计算年龄的解决办法 48 20. 测试报告知多少 48 21. 调用共享文件 49 22. 识别grid中的button 52 23. How to parameterize your link 52 24. QTP中的步骤生成器 54 25. QTP感想 56 26. QTP 参数化...

    介绍如何进行QTP数据驱动测试

    介绍如何进行数据驱动测试 测试脚本的开发和维护是自动化测试的重要环节,适当地调整和增强测试脚本,能提高测试... 数据驱动的测试方法要解决的核心问题是把数据从测试脚本中分离出来,从而实现测试脚本的参数化。

    QTP入门-检查点输出值参数化 录像

    QTP入门-检查点输出值参数化 录像 检查点 输出值 参数化 同步点 1.检查点 目的: 检查点比较指定属性的当前值与期望值,以判断当前的程序(或站点)功能是否...除了wait以外,还可以通过设置同步点来解决上述问题。

    QTP虚拟对象的使用

    QTP 虚拟对象的使用方法,在使用qtp录制脚本时会遇到对象不能识别的问题,可以采用创建虚拟对象的方法来解决此问题。

Global site tag (gtag.js) - Google Analytics