51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5642|回复: 36
打印 上一主题 下一主题

[原创] 当运行的环境不同时,对话框的FRAME是变化的怎么办?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-11-19 18:31:45 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 FLY000 于 2010-11-19 19:15 编辑

在系统中,同一个功能,在不同的任务、不同的报表期、不同的数据集下使用,

这个功能的对话框的FRAME的属性是变化的怎么办?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

37#
发表于 2010-11-25 10:52:42 | 只看该作者
Browser("Wtap2.0").Page("DataManagePage").Frame("url:=.*hz.*").highlight
//这样可以高亮显示我需要获得的frame
FLY000 发表于 2010-11-22 19:10


既然你这个描述性方法可以准确找到对象,那你可以在对象库里对这个对象进行同样的设置,

也就是去掉所有属性,去掉Enable Smart Identification开关,然后添加url属性,修改url属性值启用正则表达式,并输入.*hz.*

这样就可以保证你用对象库方式和描述性方式是完全同样的设置,完全等价。
回复 支持 反对

使用道具 举报

该用户从未签到

36#
发表于 2010-11-25 10:42:26 | 只看该作者
回复  yabest

对象库里FRAME是这样的,是不是表示没有打开正则表达式?
FLY000 发表于 2010-11-24 20:57



Object Identification设置是用来录制新对象的时候用的,对象被加入对象库时默认都会用这个设置。
但对于录制好的已存在于对象库里的对象不起作用,你需要直接对对象库里的对象进行修改。

Object Identification设置里没有正则表达式的开关,这个开关只有在对象库里编辑某个对象的某个属性时才有,是针对属性的,不是针对对象的。
比如某个对象有name和url两个属性,可以编辑name输入固定值,然后编辑url属性,启用正则表达式开关,并输入含通配符的url值。

那个Smart Identification最好不要用,如果你已经准确的设置好了属性,就能正确的识别到对象,再用Smart Identification模糊匹配只会来添乱。
回复 支持 反对

使用道具 举报

该用户从未签到

35#
发表于 2010-11-25 10:22:07 | 只看该作者
这么做你看如何
如果说,hz 能唯一识别该frame
set mydesc = description.create
mydesc("url").value = ...
sunnyswu 发表于 2010-11-24 21:24


老兄,  Frame(mydesc) 这个对象使用了描述性方法,从Frame(mydesc) 对象开始就宣告脱离对象库了,离开对象库的对象族谱了。
Frame(mydesc) 及它的子孙都变成私生子、黑户了,只能自己靠自己,只能自说自话,自己描述自己是谁了。
QTP哪知道你说的Frame(mydesc) .WebCheckBox("层层汇总")是谁家的孩子,排行第几,有什么特征啊!对象库里根本就没有Frame(mydesc),更不用说Frame(mydesc)的子孙了!
回复 支持 反对

使用道具 举报

该用户从未签到

34#
发表于 2010-11-24 21:24:13 | 只看该作者
这么做你看如何
如果说,hz 能唯一识别该frame
set mydesc = description.create
mydesc("url").value = ".*hz.*"
Browser("Wtap2.0").Page("DataManagePage").Frame(mydesc).WebCheckBox("层层汇总").Click
不知道 能不能解决,可以试验一下吧
回复 支持 反对

使用道具 举报

该用户从未签到

33#
 楼主| 发表于 2010-11-24 20:57:46 | 只看该作者
回复 32# yabest





对象库里FRAME是这样的,是不是表示没有打开正则表达式?

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

该用户从未签到

32#
发表于 2010-11-24 18:32:02 | 只看该作者
Browser("Wtap2.0").Page("DataManagePage").Frame("CollectFrame").SetTOProperty "url",".*hz.*"
Browse ...
FLY000 发表于 2010-11-22 19:10



  检查一下,看看对象库里Frame("CollectFrame")的正则表达式开关打开了没有?
  Frame("url:=。。。")这种描述性写法会默认打开正则表达式,
  而Frame("CollectFrame")这种对象库写法则会根据对象库里的设置来决定是否打开正则表达式开关。

  另外,可以在对象库里,编辑对象属性,并点HighLight按钮,实时看到HighLight结果,
  以此来检查属性设置是否正确,所对应的对象是否正确,无需用代码来调试和修改属性设置。
回复 支持 反对

使用道具 举报

该用户从未签到

31#
 楼主| 发表于 2010-11-24 16:17:42 | 只看该作者
当这个frame的url会变化时,你可以动态修改这个frame仓库对象的属性,然后再进行操作,比如

Browser("Wt ...
yabest 发表于 2010-11-22 17:03



    请yabest再帮忙看看我在21楼说的那个现象是为什么?我按照你的这个办法行不通
回复 支持 反对

使用道具 举报

该用户从未签到

30#
发表于 2010-11-23 09:43:54 | 只看该作者
[code][code][code][code]
回复 支持 反对

使用道具 举报

该用户从未签到

29#
发表于 2010-11-23 09:43:44 | 只看该作者
  1. [code][code][code][code]
复制代码
[/code][/code][/code][/code]
回复 支持 反对

使用道具 举报

该用户从未签到

28#
发表于 2010-11-23 09:34:41 | 只看该作者
000
回复 支持 反对

使用道具 举报

该用户从未签到

27#
发表于 2010-11-23 09:34:16 | 只看该作者
使用对象来完成!
回复 支持 反对

使用道具 举报

该用户从未签到

26#
发表于 2010-11-23 09:25:41 | 只看该作者
回复 支持 反对

使用道具 举报

该用户从未签到

25#
发表于 2010-11-23 09:25:33 | 只看该作者
??
回复 支持 反对

使用道具 举报

该用户从未签到

24#
发表于 2010-11-23 09:25:24 | 只看该作者
回复 支持 反对

使用道具 举报

该用户从未签到

23#
发表于 2010-11-23 09:25:11 | 只看该作者
回复 支持 反对

使用道具 举报

该用户从未签到

22#
发表于 2010-11-22 21:00:26 | 只看该作者
其实不用这么麻烦,绕半天的。

你就直接在对象库里,将那个frame对象的条件,用正则表达式 设置成url=". ...
yabest 发表于 2010-11-22 16:56



回复 支持 反对

使用道具 举报

该用户从未签到

21#
 楼主| 发表于 2010-11-22 19:10:22 | 只看该作者
本帖最后由 FLY000 于 2010-11-22 19:14 编辑

Browser("Wtap2.0").Page("DataManagePage").Frame("CollectFrame").SetTOProperty "url",".*hz.*"
Browser("Wtap2.0").Page("DataManagePage").Frame("CollectFrame").WebCheckBox("层层汇总").Click
--------------
这样做不行,运行提示:Cannot identify the object "层层汇总" (of class WebCheckBox). Verify that this object's properties match an object currently displayed in your application.



Browser("Wtap2.0").Page("DataManagePage").Frame("CollectFrame").SetTOProperty "url",".*hz.*"
msgbox Browser("Wtap2.0").Page("DataManagePage").Frame("CollectFrame").GetToProperty("url")
//得到的值是 .*hz.* 说明SetTOProperty复制成功了
Browser("Wtap2.0").Page("DataManagePage").Frame("CollectFrame").highlight
//但是执行这句高亮显示的是外面的大的frame

Browser("Wtap2.0").Page("DataManagePage").Frame("url:=.*hz.*").highlight
//这样可以高亮显示我需要获得的frame

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

该用户从未签到

20#
 楼主| 发表于 2010-11-22 17:50:27 | 只看该作者
哦,我是尽量用对象库来做的
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2010-11-22 17:38:23 | 只看该作者
本帖最后由 yabest 于 2010-11-22 17:41 编辑
Browser("Wtap2.0").Page("DataManagePage").Frame("CollectMainFrame").SetTOProperty("url", "bj")

这 ...
FLY000 发表于 2010-11-22 17:25



    我只是偷懒,设置成 ".*hz.*" 就可以了,一样可以用正则表达式。

    尽量用对象库来实现,这样简单,代码简洁。

    不要用描述性写那么多代码,看得多累啊!
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-17 16:32 , Processed in 0.084171 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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