51Testing软件测试论坛

标题: 正在学习QTP,描述性编程遇到不识别对象的问题 [打印本页]

作者: fisherlala    时间: 2010-12-1 16:35
标题: 正在学习QTP,描述性编程遇到不识别对象的问题
本帖最后由 fisherlala 于 2010-12-1 16:47 编辑

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

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

在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
自己顶一下先。。。这问题我今天还是没解决
作者: skyzhu    时间: 2010-12-2 10:27
尽量不要用text属性
作者: 泥泥虫    时间: 2010-12-2 10:32
调试下 msgbox err_msg返回的值是什么。。是否需要转换成字符串的处理?
作者: skyzhu    时间: 2010-12-2 13:13
本帖最后由 skyzhu 于 2010-12-2 16:21 编辑

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


或者干脆。。。
err_msg = "您输入的.+在系统中已经存在"
作者: runnerhuang    时间: 2010-12-2 15:20
这个应该是9.2版本的bug.你可以尝试改成
If Not Dialog("D").Static("text:="&err_msg).Exist
   then...
   else....
这样可以避免当不弹出对对话框时,QTP报找不到对象的错误(注:这个错误并不是每次都会出现的)
作者: fisherlala    时间: 2010-12-2 17:08
试过转换成字符串处理也不起作用

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

我再试一下别的方法吧,先谢谢各位
作者: skyzhu    时间: 2010-12-2 17:54
关于找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
谢谢5楼,原因是我中括号那里忘记加转义字符了。。。。

同时也谢谢大家,通过大家,我多学了很多东西
作者: 小白cool    时间: 2010-12-3 09:37
这个我题我遇到过 后来解决了
作者: qiujialei    时间: 2010-12-4 18:15
关注中
作者: ycguhang2012    时间: 2010-12-13 16:27
尽量不要用text属性
作者: lantianwei    时间: 2010-12-13 17:31
果然和我想的一样 这样的问题肯定是你输入的字符串和实际的字符串不一致导致的




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2