51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 3394|回复: 11
打印 上一主题 下一主题

[求助] QTP描述性编程的exist方法判断问题求解

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2013-3-19 19:20:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在使用QTP描述性编程判断,控件能操作但是使用exist判断控件是否存在却返回 False,求解
代码如下:
Set pcontrol=description.Create()
  pcontrol("micclass").value="Window"'
  pcontrol("text").value=".*登录.*"         
  Set control=desktop.ChildObjects(pcontrol)
  If control.count>0 Then
        control(0).activate()
        print control(0).exist
end if
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2013-3-20 09:46:37 | 只看该作者
给定限定条件你也可以使用正则表达式,不过注意设置开关打开:

pcontrol("text").regularExpression = True
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2013-3-20 10:00:40 | 只看该作者
回复 2# lgh75560


    开关是默认打开的,现在问题不是 找不到控件,控件都可以进行activate(),close等操作,证明控件是可以找到的,但是用
exist判断存在时一直返回false,这里不理解,而且如果把 print control(0).exist放在操作前面,后面的操作都会报错,如下面代码
Set pcontrol=description.Create()
  pcontrol("micclass").value="Window"'
  pcontrol("text").regularExpression = True
  pcontrol("text").value=".*登录.*"         
  Set control=desktop.ChildObjects(pcontrol)
  If control.count>0 Then
        print control(0).exist
        control(0).activate()
end if

错误如下
General run error.
Line (8): "control(0).activate()".
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2013-3-20 10:22:17 | 只看该作者
额,我也不大清楚咯,看样子,你要要遍历桌面窗口,然后激活某个特定的。
QTP里面确实没弄过,坐等大侠解决你的问题。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2013-3-20 10:30:16 | 只看该作者
回复 4# lgh75560

谢谢lgh75560,热心人啊
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-4-2 12:39
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
    发表于 2013-3-20 11:13:52 | 只看该作者
    很久前用过,说错勿怪。

    我看起其他人都在这么用
    If Window("Flight Reservation").Exist(2) Then

    加了个括号和时间数字,不知道不加的用法,会不会有问题。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2013-3-20 11:40:59 | 只看该作者
    回复 6# omg


        谢谢,exist应该等同exist(20),现在奇怪的按下面这种写法是可以的
        print Window("text:=.*登录.*").exist 返回为ture,理论上和上面代码的作用是一样的,按上面的
    写法就返回false 十分不解
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2013-3-20 11:50:01 | 只看该作者
    本帖最后由 lgh75560 于 2013-3-21 15:24 编辑

    呵呵,之前不知道能直接使用Desktop对象获取桌面顶层窗口,
    我打开两个画图程序,跑你那段代码是没有问题的,
    也不关正则的事情,算我寡闻鸟,,,
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2013-3-21 15:19:18 | 只看该作者
    回复 8# lgh75560

    一直没有解决,我换个写法吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2013-3-21 17:47:01 | 只看该作者
    是什么语言写的程序啊,
    C#
    C++?还是啥
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2013-3-28 16:01:31 | 只看该作者
    楼主,激活window窗口的固定格式是Window("").Activate,会不会是你的大小写的问题啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2013-3-29 20:28:48 | 只看该作者
    用 if control(0).exist  then control(0).active 看看呢
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-5-11 19:38 , Processed in 0.074943 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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