51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3205|回复: 12
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-12-1 16:35:01 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 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,这个验证总是通不过。但是如果把提示信息写死在程序里,就能识别了。

请问我这么使用描述性编程有没有问题?不识别对话框的原因是什么?谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

13#
发表于 2010-12-13 17:31:09 | 只看该作者
果然和我想的一样 这样的问题肯定是你输入的字符串和实际的字符串不一致导致的
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2010-12-13 16:27:15 | 只看该作者
尽量不要用text属性
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2010-12-4 18:15:54 | 只看该作者
关注中
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2010-12-3 09:37:08 | 只看该作者
这个我题我遇到过 后来解决了
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2010-12-2 19:41:28 | 只看该作者
谢谢5楼,原因是我中括号那里忘记加转义字符了。。。。

同时也谢谢大家,通过大家,我多学了很多东西
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 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属性)
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2010-12-2 17:08:18 | 只看该作者
试过转换成字符串处理也不起作用

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

我再试一下别的方法吧,先谢谢各位
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2024-9-2 09:10
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]测试连长

    6#
    发表于 2010-12-2 15:20:24 | 只看该作者
    这个应该是9.2版本的bug.你可以尝试改成
    If Not Dialog("D").Static("text:="&err_msg).Exist
       then...
       else....
    这样可以避免当不弹出对对话框时,QTP报找不到对象的错误(注:这个错误并不是每次都会出现的)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2010-12-2 13:13:27 | 只看该作者
    本帖最后由 skyzhu 于 2010-12-2 16:21 编辑

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


    或者干脆。。。
    err_msg = "您输入的.+在系统中已经存在"
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2010-12-2 10:32:09 | 只看该作者
    调试下 msgbox err_msg返回的值是什么。。是否需要转换成字符串的处理?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2010-12-2 10:27:44 | 只看该作者
    尽量不要用text属性
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2#
     楼主| 发表于 2010-12-2 10:11:44 | 只看该作者
    自己顶一下先。。。这问题我今天还是没解决
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-18 12:31 , Processed in 0.071746 second(s), 26 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表