QTP 11中的区分大小写问题:VBScript中不同案例的结果不同

时间:2011-08-17 10:29:17

标签: vbscript qtp case-sensitive

我今天在QTP 11中发现了奇怪的行为:表达式

Browser().Page().WebElement("PositionManagerContainer").WebElement("LoadingMessage").Object.ParentNode.ParentNode

给出错误:对象必需“.Object.ParentNode”

但是表达

Browser().Page().WebElement("PositionManagerContainer").WebElement("LoadingMessage").Object.parentNode.ParentNode

(.Object的ParentNode成员的区别) 是正确的,没有任何错误正常工作。

浏览器是Firefox。在IE中,它运行良好。

有人可以解释为什么会这样吗?只是为了兴趣。

1 个答案:

答案 0 :(得分:5)

这是一个非常好(和微妙)的观点。 通常,.Object允许访问正在测试的应用程序中的本机对象。由于QTP是基于VBScript的,这意味着测试对象的.Object属性为IDispatch

使用IE时,QTP可以传递IE公开的MSHTML对象(并且支持IDispatch),因为MSHTML旨在与VBScript一起使用,这些对象不区分大小写。但是,在使用Firefox时,浏览器不会显示IDispatch支持对象。因此,QTP必须通过查询Firefox公开的对象来创建实现IDispatch的代理对象。由于Firefox旨在使用JavaScript( 区分大小写),因此此代理对象会自动区分大小写。

您看到的错误来自于第一个ParentNode返回Empty,因此第二个.ParentNode引发了错误。

因此,在Firefox中使用.Object时,必须使用正确的大小写来表示您访问的属性和方法。