vmg*_*vmg 3 vbscript qtp case-sensitive
我今天在QTP 11中发现了奇怪的行为:表达式
Browser().Page().WebElement("PositionManagerContainer").WebElement("LoadingMessage").Object.ParentNode.ParentNode
Run Code Online (Sandbox Code Playgroud)
给出错误:对象必需".Object.ParentNode"
但表达
Browser().Page().WebElement("PositionManagerContainer").WebElement("LoadingMessage").Object.parentNode.ParentNode
Run Code Online (Sandbox Code Playgroud)
(.Object的ParentNode成员的情况不同)是正确的,没有任何错误正常工作.
浏览器是Firefox.在IE中它工作得很好.
有人能解释为什么会这样吗?只是为了兴趣.
这是一个非常好(和微妙)的观点.通常.Object
允许访问正在测试的应用程序中的本机对象.由于QTP是基于VBScript的,这意味着.Object
测试对象的属性是IDispatch
.
使用IE时,QTP可以传递IE公开的MSHTML对象(以及支持的对象IDispatch
),因为MSHTML旨在与VBScript一起使用,因此这些对象不区分大小写.但是,在使用Firefox时,浏览器不会显示任何IDispatch
支持对象.因此,QTP必须创建一个代理对象,IDispatch
该对象通过查询Firefox公开的对象来实现.由于Firefox是设计用JavaScript的工作(这是区分大小写),该代理对象会自动区分大小写.
您看到的错误来自第一个ParentNode
返回的事实,Empty
因此第二个.ParentNode
引发了错误.
因此,在使用.Object
Firefox时,必须使用正确的外壳来访问您访问的属性和方法.
归档时间: |
|
查看次数: |
1072 次 |
最近记录: |