我正在尝试使用childObjects方法。 在某些情况下,在大页面(包含许多对象)上,我看到qtp变为“无响应”,并且函数返回空列表。
在不同的计算机上它可以正常工作,但如果我继续增加页面中的对象数量,它也会失败。
我也尝试在facebook(登录后)和www.ynet.co.il上,在这两种情况下,它在一台计算机上失败,在另一台计算机上它运行正常(相同的qtp11版本)。
什么可能导致这个问题?我该如何解决这个问题?
答案 0 :(得分:1)
在QTP中,当浏览器响应时间过长时会出现超时,如果在ChildObjects
期间发生超时,则会返回空列表。两台计算机之间的差异可能是一台比另一台更快。
为了解决此问题,您应该尝试缩小要检索的元素数量,在指定html tag
时添加描述以仅检索所有子对象的子集(我不认为你真的需要一个所有DOM元素的列表)。如果您做实际上需要所有DOM元素,那么您可以使用Browser
的{{1}}方法(QTP11中的新方法)将操作移动到浏览器端。< / p>
如果您选择在说明中使用RunScript
,则最好指定它不是正则表达式。
html tag
答案 1 :(得分:0)
可以使用
设置超时Dim SaveDefaultTimeOut: SaveDefaultTimeOut=Setting ("DefaultTimeout")
Setting ("DefaultTimeout")=<newval>
Dim SaveWebTimeout: SaveWebTimeout=Setting ("WebTimeout")
Setting ("WebTimeout")=<newval>
在childObjects调用之前设置更高的超时,并使用
恢复原始超时Setting ("DefaultTimeout")=SaveDefaultTimeOut
Setting ("WebTimeout")=SaveWebTimeout
但是,您应始终将QTP客户端之间的时间值标准化,以获得可比较的结果。一种方法是将它们设置在库中,方法是将以下行插入库中(在全局scrope上,而不是在任何例程中):
Setting ("DefaultTimeout")=5000
Setting ("WebTimeout")=5000
一旦加载库,就会设置超时,覆盖配置对话框中的值。