2012-03-25 103 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 

一旦被加載庫,超時將被設置,覆蓋配置對話框中的值。