描述性编程的两种方式(对象可以不用添加到对象仓库中)
1、一种是直接描述,即对象名(“属性名:=属性值”),从父层一直描述到最终想要操作的对象
例如:browser(“micclass:=browser”).page(“micclass:=page”).webedit(“name:=wd”).set“qtp自动化”
注释:子对象描述,父对象和祖父对象可以不用描述也是对的
如果父对象和祖父对象都进行描述了,子对象没有进行描述,那么这是错误的
2、另一种是先创建properties集合,然后创建properties对象,创建完毕后,就可以在运行中在properties对象中添加、编辑、删除或检索属性和属性值了
提示:第二种描述性编程一定要释放所有设置的对象,规则为最后设置的最先释放
例如: set objbrowser=description.create()
objbbrowser(“micclass”).value=“browser”
set objpage=description.create()
objpage(“micclass”).value=“page”
set objwebedit=description。create()
objwebedit(“html tag”).value=“INPUT”
objwebedit(“name”).value=“wd”
browser(objbrowser).page(objpage).webedit(objwebedit).set“自动化测试”
‘释放对象..............................................................
set objwebedit=nothing
set objpage=nothing
set objbrowser=nothing
总结:
描述性编程可描述的属性都是封装接口属性,不是自身接口属性
第一种方法更适合应用于普通的脚本中,挡在对象库编程中无法完成任务的时候,描述性编程临时加上一句,这样显得更加直观,代码数量
也更加少。但是明显的缺陷就是无法做到复用
第二种方法更适合应用于基本框架的脚本中,从表象上看虽然比前者会多谢几句代码,但是这种方式的复用性远远优于前者
同时操作浏览器的多个窗口时:
browser("creationtime:=0").navigate "http://www.51testing.com"
browser("creationtime:=1").navigate"http://www.baidu.com"
使用browser(“creationtime:=-1”)的时候,表明当前有且仅有一个浏览器窗口,
当只需要一个浏览器的时候,可以使用这个方法来作为判断依据,脚本如下:
objbrowser=browser(“creationtime:=-1”).exist
if objbrowser then
msgbox“只存在一个浏览器窗口”
else
msgbox“存在0个或多个浏览器窗口”
end if
例子:添加几百个输入框
’打开网站网页
systemutil.run“c:\program files\internet explorer\iexplore.exe”,“http://www.baidu.com/gaoji/advanced.html”
‘描述对象 -- webedit
set all_oedit=description.create()
all_oedit("micclass").value="webedit"
‘为webedit找父对象和祖父对象,并将所有对象“包装”在一起
set all|_oedits=browser("micclass:=browser").page("micclass:=page").childobjects(all_oedit)
'遍历页面中的webedit对象,找到一个就输一串指定的字符串
for i=0 to all_oedits.count-1
set oedit =all_oedits.item(i)
oedit.set“qtp自动化测试”
next
’最后释放所有设置的对象
set oedit=nothing
set all_oedits=nothing
set all_oedit=nothing