|
本帖最后由 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内置对象和函数时内容时会报错 |
|