正在学习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,这个验证总是通不过。但是如果把提示信息写死在程序里,就能识别了。
请问我这么使用描述性编程有没有问题?不识别对话框的原因是什么?谢谢! 自己顶一下先。。。这问题我今天还是没解决 尽量不要用text属性 调试下 msgbox err_msg返回的值是什么。。是否需要转换成字符串的处理? 本帖最后由 skyzhu 于 2010-12-2 16:21 编辑
试试
name = "xxxx"
err_msg = "您输入的\[" & name & "\]在系统中已经存在"
或者干脆。。。
err_msg = "您输入的.+在系统中已经存在" 这个应该是9.2版本的bug.你可以尝试改成
If Not Dialog("D").Static("text:="&err_msg).Exist
then...
else....
这样可以避免当不弹出对对话框时,QTP报找不到对象的错误(注:这个错误并不是每次都会出现的) 试过转换成字符串处理也不起作用
楼上提供的用If Not的方法,倒是可以,但是不严密,因为我们系统这个功能会弹很多对话框,不止这一个。。。
我再试一下别的方法吧,先谢谢各位 关于找Dialog,供LZ参考
首先,Dialog看似在对象库中是在Browser下的
但实际在desktop下,也就是和Browser同级就存在,往往Browser下用描述属性的方式找经常会找不到(各种QTP版本情况不一样,比如8,9,10)
个人做法,找出desktop下所有Dialog,然后进行筛选,IE弹出的Dialog标题是固定的(但各种IE又是不一样的)
找到需要的Dialog以后再找Static需要的属性(Dialog下是存在多个Static对象的,但只有一个是有text属性) 谢谢5楼,原因是我中括号那里忘记加转义字符了。。。。
同时也谢谢大家,通过大家,我多学了很多东西:) 这个我题我遇到过 后来解决了 关注中 尽量不要用text属性 果然和我想的一样 这样的问题肯定是你输入的字符串和实际的字符串不一致导致的
页:
[1]