FLY000 发表于 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

lyscser 发表于 2010-11-22 21:00:26

其实不用这么麻烦,绕半天的。

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


Coolwind9 发表于 2010-11-23 09:25:11

Coolwind9 发表于 2010-11-23 09:25:24

Coolwind9 发表于 2010-11-23 09:25:33

??

Coolwind9 发表于 2010-11-23 09:25:41

Coolwind9 发表于 2010-11-23 09:34:16

使用对象来完成!

Coolwind9 发表于 2010-11-23 09:34:41

000

Coolwind9 发表于 2010-11-23 09:43:44

Coolwind9 发表于 2010-11-23 09:43:54

FLY000 发表于 2010-11-24 16:17:42

当这个frame的url会变化时,你可以动态修改这个frame仓库对象的属性,然后再进行操作,比如

Browser("Wt ...
yabest 发表于 2010-11-22 17:03 http://bbs.51testing.com/images/common/back.gif


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

yabest 发表于 2010-11-24 18:32:02

Browser("Wtap2.0").Page("DataManagePage").Frame("CollectFrame").SetTOProperty "url",".*hz.*"
Browse ...
FLY000 发表于 2010-11-22 19:10 http://bbs.51testing.com/images/common/back.gif


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

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

FLY000 发表于 2010-11-24 20:57:46

回复 32# yabest





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

sunnyswu 发表于 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
不知道 能不能解决,可以试验一下吧

yabest 发表于 2010-11-25 10:22:07

这么做你看如何
如果说,hz 能唯一识别该frame
set mydesc = description.create
mydesc("url").value = ...
sunnyswu 发表于 2010-11-24 21:24 http://bbs.51testing.com/images/common/back.gif

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

yabest 发表于 2010-11-25 10:42:26

回复yabest

对象库里FRAME是这样的,是不是表示没有打开正则表达式?
FLY000 发表于 2010-11-24 20:57 http://bbs.51testing.com/images/common/back.gif


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

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

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

yabest 发表于 2010-11-25 10:52:42


Browser("Wtap2.0").Page("DataManagePage").Frame("url:=.*hz.*").highlight
//这样可以高亮显示我需要获得的frame
FLY000 发表于 2010-11-22 19:10 http://bbs.51testing.com/images/common/back.gif

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

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

这样就可以保证你用对象库方式和描述性方式是完全同样的设置,完全等价。
页: 1 [2]
查看完整版本: 当运行的环境不同时,对话框的FRAME是变化的怎么办?