好久没来写东西了,说明这段时间在理论知识方面并没有进步,呵呵
QTP描述性编程一直以来很模糊,今天终于有些明白,记录下成果
下面是一段实例代码:
'描述性编程
SystemUtil.Run "C:/Program Files/Internet Explorer/iexplore.exe","","C:/Documents and Settings/extcnleili","open"
Browser("Dict.CN 海词 在线词典 在线翻译 在线学习").Page("Page").Sync
Browser("Dict.CN 海词 在线词典 在线翻译 在线学习").Navigate "http://www.dict.cn/"
'用一个主属性定位多个对象
Set ButDesc = Description.Create
ButDesc("micclass").Value = "Link"
msgbox Browser("Dict.CN 海词 在线词典 在线翻译 在线学习").Page("Dict.CN 海词 在线词典 在线翻译 在线学习_2").ChildObjects(ButDesc).count
'用多个属性定位一个对象
Set a = Description.Create
a("micclass").Value = "Link"
a("text").Value = "翻译"
'a("href").Value = "http://www.dict.cn/fy/"
'a("html tag").Value = "A"
'Browser("Dict.CN 海词 在线词典 在线翻译 在线学习").Page("Dict.CN 海词 在线词典 在线翻译 在线学习_2").Link(a).Click
'对象的赋值,必须使用 set 否则出错
set b=Browser("Dict.CN 海词 在线词典 在线翻译 在线学习").Page("Dict.CN 海词 在线词典 在线翻译 在线学习_2").Link(a)
b.Click
'Browser("Dict.CN 海词 在线词典 在线翻译 在线学习").Page("Dict.CN 海词 在线词典 在线翻译 在线学习_2").Link("翻译").Click
wait(10)
Browser("Dict.CN 海词 在线词典 在线翻译 在线学习").Page("Dict.CN 海词 在线词典 在线翻译 在线学习_2").WebEdit("q").Click
Browser("Dict.CN 海词 在线词典 在线翻译 在线学习").Page("Dict.CN 海词 在线词典 在线翻译 在线学习_2").WebEdit("q").Set "man"
Browser("Dict.CN 海词 在线词典 在线翻译 在线学习").Page("Dict.CN 海词 在线词典 在线翻译 在线学习_2").WebButton("搜 索").Click
Browser("Dict.CN 海词 在线词典 在线翻译 在线学习").Page("man的英语解释词典意思 - Dict.CN").Sync
Browser("Dict.CN 海词 在线词典 在线翻译 在线学习").CloseAllTabs
从网上摘得很有用的一段话:
miclass是windows标准控件的内置属性,而class name并不是标准控件的属性之一,而是QTP做的二次封装,也就是说,当对象在QTP记录之后,也就是QTP对对象进行二次封装之后才会有class name这个属性,而当我们使用childobjects,对象并没有被记录到QTP对象库中,也就是QTP还没有对对象进行封装,所以是没有class name这个属性的,我们通过class name这个属性当然找不到了
或者说当使用childobjects()函数时,它可能并不支持查询条件为class name,所以会报general run error
来源链接:http://bbs.51testing.com/thread-119085-1-1.html
欢迎大家讨论,如有问题请留言,谢谢!