2012-03-25 109 views
1

我想使用childObjects方法。 在一些大页面(包含很多对象)的情况下,我看到qtp变成“没有响应”,并且函数返回空列表。qtp成为“没有响应”

在不同的计算机上工作正常,但如果我继续增加页面中的对象数量,它也会失败。

我也尝试在Facebook上(登录后)和www.ynet.co.il并在两种情况下它没有一台计算机上,而在另一个它工作正常(同qtp11版)。

什么会导致此问题?我该如何解决这个问题?

回答

1

在QTP有超时时,浏览器时间过长回应,如果ChildObjects一个空列表将恢复期间发生超时。两台计算机之间的差异可能是一个比另一个快。

为了解决此问题,您应该尝试缩小尝试检索的元素的数量,在指定html tag时添加说明以仅检索所有子对象的子集(我不'假设你真的需要所有DOM元素的列表)。如果你实际上需要所有的DOM元素,那么也许你可以使用BrowserRunScript方法(QTP11中的新功能)将动作移动到浏览器端。

如果您选择,如果你指定它不是一个正则表达式是更好的描述使用html tag

Set desc = Description.Create() 
desc("html tag").Value = "div" 
desc("html tag").RegularExpression = False 
+0

添加说明不起作用。如何增加超时时间 – user1291465 2012-03-26 08:18:39

+0

@ user1291465我不认为你可以改变超时时间,请参阅我的编辑回答,你应该关掉'html标签'的正则表达式。 – Motti 2012-03-27 17:45:15

0

可能可以使用

Setting ("DefaultTimeout")=SaveDefaultTimeOut 
Setting ("WebTimeout")=SaveWebTimeout 

你应该设置使用

Dim SaveDefaultTimeOut: SaveDefaultTimeOut=Setting ("DefaultTimeout") 
Setting ("DefaultTimeout")=<newval> 
Dim SaveWebTimeout: SaveWebTimeout=Setting ("WebTimeout") 
Setting ("WebTimeout")=<newval> 

提出了更高的超时childObjects打电话之前超时,并恢复原来的超时,但是,总是标准化QTP客户端的时间值,以获得可比较的结果。要做到这一点的方法之一是将它们放置在图书馆,由(,不以任何常规全球斯克罗普)将下列行到库:

Setting ("DefaultTimeout")=5000 
Setting ("WebTimeout")=5000 

一旦被加载库,超时将被设置,覆盖配置对话框中的值。