最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

QTP一些问题的解决方法

来源:动视网 责编:小OO 时间:2025-10-02 00:52:17
文档

QTP一些问题的解决方法

以下是我经常遇到的问题:      一、无法识别控件。      二、错误回放过程未知弹出窗口。      三、加载.net插件后和TD的关联问题。      四、动态加载元素的识别问题。      五、调用外部dll的问题。      六、随机验证码的问题。问题一,解决办法有三种:  1、更改QTP自身对某控件的识别方式,在tools——ObjectIdentification中。在这里列出了所有QTP能识别的控件,以及控件的识别方式。你可以给他添加X、Y坐标进行识别。或更明显的,列表中的信
推荐度:
导读以下是我经常遇到的问题:      一、无法识别控件。      二、错误回放过程未知弹出窗口。      三、加载.net插件后和TD的关联问题。      四、动态加载元素的识别问题。      五、调用外部dll的问题。      六、随机验证码的问题。问题一,解决办法有三种:  1、更改QTP自身对某控件的识别方式,在tools——ObjectIdentification中。在这里列出了所有QTP能识别的控件,以及控件的识别方式。你可以给他添加X、Y坐标进行识别。或更明显的,列表中的信
以下是我经常遇到的问题:

       一、无法识别控件。

       二、错误回放过程未知弹出窗口。

       三、加载.net插件后和TD的关联问题。

       四、动态加载元素的识别问题。

       五、调用外部dll的问题。

       六、随机验证码的问题。

问题一,解决办法有三种:

   1、更改QTP自身对某控件的识别方式,在 tools——Object Identification 中。在这里列出了所有QTP能识别的控件,以及控件的识别方式。你可以给他添加X、Y坐标进行识别。或更明显的,列表中的信息,不按名称识别,而是按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自带的插件,如果你安装了其它插件(如.net、java、 etc.),默认是不加载的。这会导致上传的脚本无法正确执行。解决办法很简单,去 Test——Setting里进行Modify 吧。从本地打开的脚本,这里不能进行Modify的。所以办法很简单,但如果不知道的话就很难了。当初为这个问题我可是废了八牛三虎之力呢……

问题四的解决过程:

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

网页上有个表格,是往数据库里加数据的。

两个表格显示在同一个页面上,左边为父表,右边为子表。

点击左表,右表显示其子项目。 

结构如下:  

A

├─1

├─2

├─3

└─4

B

├─1

├─2

├─3

└─4

                    ……

思想很清晰:

添加一个父项A、选中此父项A、对其添加子项1、2、3、4

添加一个父项B、选中此父项B、对其添加子项1、2、3、4  ……

代码也很简单:

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一些问题的解决方法

以下是我经常遇到的问题:      一、无法识别控件。      二、错误回放过程未知弹出窗口。      三、加载.net插件后和TD的关联问题。      四、动态加载元素的识别问题。      五、调用外部dll的问题。      六、随机验证码的问题。问题一,解决办法有三种:  1、更改QTP自身对某控件的识别方式,在tools——ObjectIdentification中。在这里列出了所有QTP能识别的控件,以及控件的识别方式。你可以给他添加X、Y坐标进行识别。或更明显的,列表中的信
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top