hotsmile99 发表于 2011-3-22 21:41:25

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:56

不是很明白你的意思

你用正则表达式来实现一下,看是否可以

lyscser 发表于 2011-3-23 08:51:47

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:01

目前,我这边在项目中存在一个这样的问题,
程序页面中需要对于一个弹出窗进行设置选择,而这个窗根据你之 ...
hotsmile99 发表于 2011-3-22 21:41 http://bbs.51testing.com/images/common/back.gif


    刚好在做一个类似的,设置一个超时时间,一个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:51

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:36

用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:54

回复 6# cooleenjunjun


    问题已经解决了,我把那些弹出的框的 enable smart identification 设置为false就可以了
不然即使用了exist(0)也要等待了20秒差不多,问题已经解决。谢谢.

hotsmile99 发表于 2011-3-23 16:01:23

回复 6# cooleenjunjun


    问题已经解决了,我把那些弹出的框的 enable smart identification 设置为false就可以了
不然即使用了exist(0)也要等待了20秒差不多,问题已经解决。谢谢.

hotsmile99 发表于 2011-3-23 16:01:37

回复 6# cooleenjunjun


    问题已经解决了,我把那些弹出的框的 enable smart identification 设置为false就可以了
不然即使用了exist(0)也要等待了20秒差不多,问题已经解决。谢谢.

hotsmile99 发表于 2011-3-23 16:01:55

回复 6# cooleenjunjun


    问题已经解决了,我把那些弹出的框的 enable smart identification 设置为false就可以了
不然即使用了exist(0)也要等待了20秒差不多,问题已经解决。谢谢.

hotsmile99 发表于 2011-3-23 16:02:24

回复 6# cooleenjunjun


    问题已经解决了,我把那些弹出的框的 enable smart identification 设置为false就可以了
不然即使用了exist(0)也要等待了20秒差不多,问题已经解决。谢谢.

hotsmile99 发表于 2011-3-23 16:02:30

回复 6# cooleenjunjun


    问题已经解决了,我把那些弹出的框的 enable smart identification 设置为false就可以了
不然即使用了exist(0)也要等待了20秒差不多,问题已经解决。谢谢.

风雪夜归人 发表于 2011-3-24 10:57:38

本帖最后由 风雪夜归人 于 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:08

楼上正解, Exist(time) 指定时间,你如果要设成0就是默认的超时时间。

所以 if obj.Exist(5)then 如果5秒内找到对像则。。。。

ROYWONG 发表于 2011-3-29 13:47:29

exist 如果不带时间的话,默认时间不是10秒吗?

开朗幽默 发表于 2011-3-30 10:55:31

可以在SETTING里面改时间,它默认的是20秒,我一般都改成1秒

greatplan 发表于 2012-6-18 10:24:00

用select case不是更好?

Charles_H 发表于 2012-6-18 11:05:36

页: [1]
查看完整版本: QTP vbs判断弹出窗口中是否出现对象库中的输入框?如何判断