fisherlala 发表于 2010-12-1 16:35:01

正在学习QTP,描述性编程遇到不识别对象的问题

本帖最后由 fisherlala 于 2010-12-1 16:47 编辑

我的QTP版本是9.2,测试的是Web应用,浏览器为IE6

出现问题的页面是这样的:
A页面点击B按钮,弹出C窗口,C窗口中可以维护一些信息项,其中有重复录入的检查,如果录入的信息存在重复,则弹出对话框D,提示“录入的已经在数据库中存在”,其中是页面上维护的信息项

在QTP中,对这个项的检查,我使用了描述性编程,我是这样写的:
err_msg = "您输入的["+name+"]在系统中已经存在"
If Browser("A").Window("C").Dialog("D").Static("text:="&err_msg).Exist
   then...
   else....
name为页面上被检查的信息项

此时系统找不到那个对话框D,这个验证总是通不过。但是如果把提示信息写死在程序里,就能识别了。

请问我这么使用描述性编程有没有问题?不识别对话框的原因是什么?谢谢!

fisherlala 发表于 2010-12-2 10:11:44

自己顶一下先。。。这问题我今天还是没解决

skyzhu 发表于 2010-12-2 10:27:44

尽量不要用text属性

泥泥虫 发表于 2010-12-2 10:32:09

调试下 msgbox err_msg返回的值是什么。。是否需要转换成字符串的处理?

skyzhu 发表于 2010-12-2 13:13:27

本帖最后由 skyzhu 于 2010-12-2 16:21 编辑

试试
name = "xxxx"
err_msg = "您输入的\[" & name & "\]在系统中已经存在"


或者干脆。。。
err_msg = "您输入的.+在系统中已经存在"

runnerhuang 发表于 2010-12-2 15:20:24

这个应该是9.2版本的bug.你可以尝试改成
If Not Dialog("D").Static("text:="&err_msg).Exist
   then...
   else....
这样可以避免当不弹出对对话框时,QTP报找不到对象的错误(注:这个错误并不是每次都会出现的)

fisherlala 发表于 2010-12-2 17:08:18

试过转换成字符串处理也不起作用

楼上提供的用If Not的方法,倒是可以,但是不严密,因为我们系统这个功能会弹很多对话框,不止这一个。。。

我再试一下别的方法吧,先谢谢各位

skyzhu 发表于 2010-12-2 17:54:09

关于找Dialog,供LZ参考
首先,Dialog看似在对象库中是在Browser下的
但实际在desktop下,也就是和Browser同级就存在,往往Browser下用描述属性的方式找经常会找不到(各种QTP版本情况不一样,比如8,9,10)
个人做法,找出desktop下所有Dialog,然后进行筛选,IE弹出的Dialog标题是固定的(但各种IE又是不一样的)
找到需要的Dialog以后再找Static需要的属性(Dialog下是存在多个Static对象的,但只有一个是有text属性)

fisherlala 发表于 2010-12-2 19:41:28

谢谢5楼,原因是我中括号那里忘记加转义字符了。。。。

同时也谢谢大家,通过大家,我多学了很多东西:)

小白cool 发表于 2010-12-3 09:37:08

这个我题我遇到过 后来解决了

qiujialei 发表于 2010-12-4 18:15:54

关注中

ycguhang2012 发表于 2010-12-13 16:27:15

尽量不要用text属性

lantianwei 发表于 2010-12-13 17:31:09

果然和我想的一样 这样的问题肯定是你输入的字符串和实际的字符串不一致导致的
页: [1]
查看完整版本: 正在学习QTP,描述性编程遇到不识别对象的问题