51Testing软件测试论坛
标题:
QTP自动化测试有趣的点滴【慢慢补充】
[打印本页]
作者:
xjwldlover
时间:
2012-11-14 19:20
标题:
QTP自动化测试有趣的点滴【慢慢补充】
本帖最后由 xjwldlover 于 2012-11-20 15:08 编辑
用了一段QTP感觉很多地方让人感觉神奇,随手记了一下。如描述错误或者有更好的解释方式,请各位不吝赐教,先行感谢~
一、
Dictionary 对象oDict新增(声明Key)元素
①oDict.Add strKey,strValue
②oDict(strKey)
方法①很好理解,Dictionary在进行add操作时增加一个键值对,要注意判断是否oDict.Exists(strKey)已存在,否则可能会报错
②即,一旦使用oDict的strKey,比如If oDict(strKey)="123" Then:End If,则oDict(strKey)自动创建,且oDict(strKey)=""。
示例:以下示例中关键语句行被注释与不注释存在巨大差别!
Dim d, msg ' Create some variables.
msg = "Hello"
Set d = CreateObject("Scripting.Dictionary")
For i = 0 To 10
If d.Exists(CStr(i)) Then
WScript.Echo msg
End If
WScript.Echo d(i) '关键语句
Next
WScript.Echo d.Count
复制代码
二、
QTP之ChildObjects(desc),通过该方法无法获取页面的隐藏元素,如果要获取这些元素,必须使用micClass属性做过滤。使用QTP(HTML)的Obj.ChildObjects(oDesc)查找对象,如果oDesc不包含micClass属性,则自动忽略某些页面元素,比如Div(映射到QTP的micClass是WebElement,但不代表所有的webElement类型元素都无法通过ChildObjects得到,div是映射到webElement的HTML元素子集)
三、
Browser.Close()与Browser.Object.Quit方法。绝大多数情况下我们使用QTP内置对象的方式关闭浏览器,但假如浏览器obj的quit方法被重写后(导致browser没有立即关闭,比如需确认保存提示信息后关闭等),再使用该方法关闭浏览器,会等待10秒,原因应该是QTP内置的Close方法会等待该浏览器消失,或直到超时。这时使用后一种方法,会非常迅速。
四、ExecuteFile 与 systemUitl.Run在执行脚本时的区别
ExecuteFile :执行vbs文件,【加载】文件信息到QTP的执行环境中(脚本宿主是QTP)。即如果文件中包含test()函数,在以后可以直接使用该函数.该函数使用QTP宿主,支持Print这样的QTP内置函数+vbs,但是不支持wsh(windows脚本宿主)对象函数,比如wscript.echo。
SystemUtil.run 执行文件和运行应用(脚本宿主是windows,即wsh)。当使用它执行vbs文件时,只是【执行】,完毕后并不将文件内容保留到windows运行环境中。这里执行的含义是使用相应的脚本宿主进行执行,支持vbs+wsh,这里就使用wsh执行文件,所以如果文件中包含mercuryTimer、Print这样的QTP内置对象和函数时内容时会报错
作者:
黑羽祭
时间:
2012-11-15 09:28
本帖最后由 黑羽祭 于 2012-11-15 09:39 编辑
LZ玩的很深啊~佩服~
作者:
xjwldlover
时间:
2012-11-15 10:59
回复
2#
黑羽祭
没那么深,只是运气差遇到了~
作者:
louqqson008
时间:
2012-11-15 14:36
留名 学习下。
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2