FLY000 发表于 2008-6-6 20:21:21

Frame_4,Frame_5....用正则表达式做

Browser("登录服务器").Page("华普财务分析系统").Frame("Frame_3").WebTable("name:=类别").RowCount

每次循环,Frame会改变,Frame_4,Frame_5....我用正则表达式做

Browser("登录服务器").Page("华普财务分析系统").Frame("Frame_").WebTable("name:=类别").RowCount

QTP提示:The "Frame_" Frame object was not found in the Object Repository.

FLY000 发表于 2008-6-6 21:24:21

cFrame="Frame_"+cstr(j2+1)
nRow2=Browser("登录服务器").Page("华普财务分析系统").Frame("name=:"&cFrame).WebTable("name:=类别").RowCount

我这样做也不行。

liangjz 发表于 2008-6-7 00:29:01

回复 2# 的帖子

Browser("登录服务器").Page("华普财务分析系统").Frame("Frame_.*").WebTable("name:=类别").RowCount

hsjzfling 发表于 2008-6-9 10:44:28

回3楼 你确定Frame("Frame_.*")这样使用正则表达式没问题么~~据我所知,对象名称上是不能使用正则表达式的

回LZ楼 实际上你的问题很可能是可以通过录制时修改Page/Frame Options的设置来解决的,录制的脚本中没有了_2,_3这些重复对象产生,就不会有你现在的问题了~~(页面中本就存在多个这样名叫Frame的对象的情况除外~)
看的出来LZ初步会使用描述性编程了,不过还没能很好的了解其实质以及部分细节。其一是name属性,这个name不是你看到在对象库中高高在上的那个Name,而是你在使用Spy查看对象时Runtime Object那一列对象属性中的一个属性。因此2楼的做法也是不可行的。

那么正确的做法应该是,先去对象库中比较这些Frame对象的识别属性,看是否完全一样,若相同则不需要使用正则表达式,将这些属性转换成描述性编程语句就可以了;若不相同,则需要根据对象属性值的不同之处与变化规律,来确定如何使用变量或者正则表达式匹配这些属性值。
顺便提一下咯,在属性完全一样时我们还可以有其它的解决办法,比如,将那些Frame_2,_3等等对象下的子对象都拖到第一个Frame对象中去,然后QTP把代码中的对象名Frame_2,_3等都替换为Frame即可。若子对象也完全一样,那么就只需要替换下代码中的对象名就好了。

若LZ还不能很好的理解的话,可以把那几个Frame对象在对象库中属性值截图发上来看看,这样我才能帮你给出代码

jifenggold 发表于 2008-6-9 16:03:05

4楼正解,通过设置能够解决这种问题。

FLY000 发表于 2008-6-10 10:08:01

1.而是你在使用Spy查看对象时Runtime Object那一列对象属性中的一个属性。
----Frame的属性怎么用SPY查看啊?

2.我这里Frame属性是一样的,Frame下的对象不同,我觉得用你说的转化成描述性编程来做较好。
----我改了options里面的设置,现在录制完后,对象都在一个Frame下面了。
----那些Frame是不是就是在对象库里的名字不一样?实际上属性是一样的,这样的话,用描述性编程来做也不能区分那些Frame啊

3.将那些Frame_2,_3等等对象下的子对象都拖到第一个Frame对象中去,然后QTP把代码中的对象名Frame_2,_3等都替换为Frame即可
----你说的这个方法,我觉得不行,因为Frame是动态生成的。“Browser("登录服务器").Page("华普财务分析系统").Frame("name=:"&cFrame).WebTable("name:=类别")” ,生成的Frame中的WebTable对象也是生成时才取的,WebTable对象并没有事先添加到对象库中,要生成多少个Frame也是不确定的。

[ 本帖最后由 FLY000 于 2008-6-10 11:31 编辑 ]

FLY000 发表于 2008-6-10 10:18:39

附件是我现在对象库中的FRAME和OPTIONS里面的FRAME设置

FLY000 发表于 2008-6-10 11:04:44

每个Frame的属性都是一样的,除了在对象库里的名字不同

boyeestudio 发表于 2008-8-13 15:44:16

这个问题,怎么设置让那个Frame在录制时不出现Frame_2,_3之类的?

这个问题,怎么设置让那个Frame在录制时不出现Frame_2,_3之类的?高手给个截图啊!

luckxiaot 发表于 2008-8-13 16:07:37

用描述性编程,或者把那写FRAME_2,FRAME_3下的对象全都放到FRAME下,把FRAME_2,FRAME_3删除!!

kevin_swpi 发表于 2008-8-13 16:36:43

其实楼主问题通过整理对象库来解决

你自己把各个frame进行命名
然后根据需要再把下面的对象来进行整理

因为你这样可能出现很多frame_?
这样不管是维护还是在代码里看起都很恼火

http://www.51testing.com/?161787/action_viewspace_itemid_89571.html
看看这个 (顺便给zte_bogk空间打个广告:lol )
应该对你有启发

yabest 发表于 2008-8-13 17:02:22

原帖由 FLY000 于 2008-6-10 10:18 发表 http://bbs.51testing.com/images/common/back.gif
附件是我现在对象库中的FRAME和OPTIONS里面的FRAME设置

你两个都选 Different Test Object Description好了,就不会出现多个Page、Frame对象了。
页: [1]
查看完整版本: Frame_4,Frame_5....用正则表达式做