51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

[原创] Frame_4,Frame_5....用正则表达式做

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-6-6 20:21:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Browser("登录服务器").Page("华普财务分析系统").Frame("Frame_3").WebTable("name:=类别").RowCount

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

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

QTP提示:The "Frame_[3-9]" Frame object was not found in the Object Repository.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2008-6-6 21:24:21 | 只看该作者
cFrame="Frame_"+cstr(j2+1)
nRow2=Browser("登录服务器").Page("华普财务分析系统").Frame("name=:"&cFrame).WebTable("name:=类别").RowCount

我这样做也不行。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-6-7 00:29:01 | 只看该作者

回复 2# 的帖子

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

使用道具 举报

该用户从未签到

4#
发表于 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对象在对象库中属性值截图发上来看看,这样我才能帮你给出代码
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-6-9 16:03:05 | 只看该作者
4楼正解,通过设置能够解决这种问题。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 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 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2008-6-10 10:18:39 | 只看该作者
附件是我现在对象库中的FRAME和OPTIONS里面的FRAME设置

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2008-6-10 11:04:44 | 只看该作者
每个Frame的属性都是一样的,除了在对象库里的名字不同

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2008-8-13 15:44:16 | 只看该作者

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

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

使用道具 举报

该用户从未签到

10#
发表于 2008-8-13 16:07:37 | 只看该作者
用描述性编程,或者把那写FRAME_2,FRAME_3下的对象全都放到FRAME下,把FRAME_2,FRAME_3删除!!
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2008-8-13 16:36:43 | 只看该作者
其实楼主问题通过整理对象库来解决

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

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

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

使用道具 举报

该用户从未签到

12#
发表于 2008-8-13 17:02:22 | 只看该作者
原帖由 FLY000 于 2008-6-10 10:18 发表
附件是我现在对象库中的FRAME和OPTIONS里面的FRAME设置


你两个都选 Different Test Object Description好了,就不会出现多个Page、Frame对象了。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-11 17:53 , Processed in 0.078335 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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