51Testing软件测试论坛

标题: QTP vbs判断弹出窗口中是否出现对象库中的输入框?如何判断 [打印本页]

作者: hotsmile99    时间: 2011-3-22 21:41
标题: QTP vbs判断弹出窗口中是否出现对象库中的输入框?如何判断
目前,我这边在项目中存在一个这样的问题,
程序页面中需要对于一个弹出窗进行设置选择,而这个窗根据你之前的选择,弹出窗的内容不一样,我现在是这样判断的,对象库中抓取了所以关于弹出窗的里面的对象,
如果这个弹出窗存在
   if   window("A").Exist then
        if   window("A").winedit("aaa").obj.exist(0) then
             进行赋值
      end if
      if window("A").winedit("bbb").obj.exist(0) then
             进行赋值
      end if
end if
但是目前,测试结果是 程序能够正确执行,但是会报错,例如弹出窗只有aaa,没有bbb 那么bbb就会报无法标识的错误,而且这种判断要耗时比较久?
哪位高手知道问题所在?
作者: arivn    时间: 2011-3-22 22:16
不是很明白你的意思

你用正则表达式来实现一下,看是否可以
作者: lyscser    时间: 2011-3-23 08:51
if   window("A").Exist then
        if   window("A").winedit("aaa").exist(0) then
             进行赋值
      end if
      if window("A").winedit("bbb").exist(0) then
             进行赋值
      end if
end if
作者: cis_cn    时间: 2011-3-23 10:28
目前,我这边在项目中存在一个这样的问题,
程序页面中需要对于一个弹出窗进行设置选择,而这个窗根据你之 ...
hotsmile99 发表于 2011-3-22 21:41



    刚好在做一个类似的,设置一个超时时间,一个DO跳出

nTimeout=1
  if   window("A").Exist then
       do
        if   window("A").winedit("aaa").obj.exist(0) then
             进行赋值
            exit do

        else if window("A").winedit("bbb").obj.exist(0) then
             进行赋值
            exit do
        
          Else                                                                                                                                              nTimeout=nTimeout+1

      end if
end if
作者: shingo0109    时间: 2011-3-23 11:27
LZ这里的winedit不知还有其他属性可以识别么, 不然可以用GetRoProperty来读取属性, 再判断, 参考如下:
if   window("A").Exist then
   ccc = window("A").winedit("xxx").GetRoProperty("name")    '如果"aaa","bbb"是指name的属性
   If Trim(ccc) = "aaa" Then
       进行赋值
   Elseif Trim(ccc) = "bbb" Then
       进行赋值
   End if
end if

如果没有的话, 那就判断exist的方法吧
作者: cooleenjunjun    时间: 2011-3-23 14:31
用if ... then...elseif...end if
如果你的弹出框的种类比较多的话 用楼上的方法比较节省时间
LZ这里的winedit不知还有其他属性可以识别么, 不然可以用GetRoProperty来读取属性, 再判断, 参考如下:
if   window("A").Exist then
   ccc = window("A").winedit("xxx").GetRoProperty("name")    '如果"aaa","bbb"是指name的属性
   If Trim(ccc) = "aaa" Then
       进行赋值
   Elseif Trim(ccc) = "bbb" Then
       进行赋值
   End if
end if

如果没有的话, 那就判断exist的方法吧

作者: hotsmile99    时间: 2011-3-23 15:25
回复 6# cooleenjunjun


    问题已经解决了,我把那些弹出的框的 enable smart identification 设置为false就可以了
不然即使用了exist(0)也要等待了20秒差不多,问题已经解决。谢谢.
作者: hotsmile99    时间: 2011-3-23 16:01
回复 6# cooleenjunjun


    问题已经解决了,我把那些弹出的框的 enable smart identification 设置为false就可以了
不然即使用了exist(0)也要等待了20秒差不多,问题已经解决。谢谢.
作者: hotsmile99    时间: 2011-3-23 16:01
回复 6# cooleenjunjun


    问题已经解决了,我把那些弹出的框的 enable smart identification 设置为false就可以了
不然即使用了exist(0)也要等待了20秒差不多,问题已经解决。谢谢.
作者: hotsmile99    时间: 2011-3-23 16:01
回复 6# cooleenjunjun


    问题已经解决了,我把那些弹出的框的 enable smart identification 设置为false就可以了
不然即使用了exist(0)也要等待了20秒差不多,问题已经解决。谢谢.
作者: hotsmile99    时间: 2011-3-23 16:02
回复 6# cooleenjunjun


    问题已经解决了,我把那些弹出的框的 enable smart identification 设置为false就可以了
不然即使用了exist(0)也要等待了20秒差不多,问题已经解决。谢谢.
作者: hotsmile99    时间: 2011-3-23 16:02
回复 6# cooleenjunjun


    问题已经解决了,我把那些弹出的框的 enable smart identification 设置为false就可以了
不然即使用了exist(0)也要等待了20秒差不多,问题已经解决。谢谢.
作者: 风雪夜归人    时间: 2011-3-24 10:57
本帖最后由 风雪夜归人 于 2011-3-24 10:59 编辑

.....回复的还真多。。
Exist(0)和Exist一样的效果。。

建议Exist(1)

另外 if   window("A").Exist then  这句话的Exist也建议加个Exist(5)

我一直都在建议Exist后面加个时间~~
作者: 17800455    时间: 2011-3-29 11:48
楼上正解, Exist(time) 指定时间,你如果要设成0就是默认的超时时间。

所以 if obj.Exist(5)  then 如果5秒内找到对像则。。。。
作者: ROYWONG    时间: 2011-3-29 13:47
exist 如果不带时间的话,默认时间不是10秒吗?
作者: 开朗幽默    时间: 2011-3-30 10:55
可以在SETTING里面改时间,它默认的是20秒,我一般都改成1秒
作者: greatplan    时间: 2012-6-18 10:24
用select case不是更好?
作者: Charles_H    时间: 2012-6-18 11:05





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