2011-10-06 48 views
1

在我們的功能測試失敗後,我們使用ISelenium.WaitForCondition方法來測試是否AJAX調用都是使用這樣的結束:硒WaitForCondition30分鐘而不是20秒

_selenium.WaitForCondition("!selenium.isElementPresent(\"" + locator + "\")", "20000"); 

有時,這種代碼失敗SeleniumException:

Selenium.SeleniumException: ERROR: Command timed out 

但是相反20000毫秒需要花費30分鐘到失敗後,所有後續的硒調用失敗的東西,如:

SeleniumException : ERROR Server Exception: unexpected command 
json={command:"waitForCondition",target:"!selenium.isElementPresent(\"//div[contains(@id, \'atlProgress\') and contains(@style, \'display: block\')]\")",value:"20000"} 
in place before new command waitForCondition could be added 

我們使用.NET Selenium端口:ThoughtWorks.Selenium.Core,版本= 2.7.0.0而不是WebDriver。

我們可以做些什麼來避免這些錯誤?

回答

0

硒使用(至少)兩個超時:

  • 一個是各種「等待」命令,併發送到瀏覽器的JavaScript等待 - 你可以在某些電話發送完全一樣,你在做'waitForCondition';

  • 另一個是服務器超時,可以在啓動服務器時設置,它控制Selenium服務器在返回'Command timed out'錯誤之前等待瀏覽器響應的時間。

我相信你所面臨的問題是,你發送一個命令,等待20秒,但您的服務器永遠不會從瀏覽器的響應,並等待其30分鐘。我想你已經將服務器超時設置爲30分鐘了。

缺少響應可能是由於瀏覽器崩潰或掛起導致「錯誤的命令」錯誤。我在這個answer更詳細地描述這個案例。