2011-06-06 38 views
1

我使用Selenium驗證google.com 首先,我在搜索框中鍵入搜索查詢,然後單擊搜索按鈕。 下一頁顯示查詢的搜索結果。Selenium的waitForPageToLoad不可靠?

我用

selenium.waitForPageToLoad("60000"); 

,然後檢查該網頁的某些元素存在。 但我得到一個「錯誤:命令超時」的waitForPageToLoad命令。 這是爲什麼發生?

回答

2

這實際上是一個混雜的包問題。您可能想嘗試一下clickAndWait,但隨着整個Web上異步請求的更改,其中一些已變得不可靠。有些頁面,即使是偉大的谷歌,也不會返回到就緒狀態,腳本也無法區分它們。但是,您可以轉而等待(waitForElementPresent,waitForPageToLoad),問題應該消失或至少更易於管理。在解決問題之前,您可能需要進入您的Google偏好設置並關閉Google即搜即得。

+0

這是否意味着在我等待的60秒內,有連續的異步/ AJAX事件發生?搜索結果頁面看起來非常簡單,我們如何判斷頁面上是否有AJAX元素? – stumped 2011-06-06 19:36:55

+0

不一定。 偶爾,ajax請求通常不更新瀏覽器。一些更有趣的應用程序實際上會導致瀏覽器認爲它正在更新,並且響應可能存在問題。 – 2011-06-06 19:37:41

+0

要判斷頁面上是否存在AJAX元素,請觀察它。如果發生任何不需要頁面刷新的事情,它就是某種類型的異步請求,通常是AJAX,但它取決於瀏覽器以及是否涉及到Flash。 – 2011-06-06 19:40:06