根本的解決方法:
$this->waitForCondition("selenium.browserbot.getUserWindow().jQuery.active == 0", "3000"); //此處3000,即限定的超時時間timeout。
$this->click("css=input[type=submit]");
解釋waitForCondition用法:
waitForCondition(JavaScriptSnippet,time)
-在限定時間內(nèi),等待一段JavaScript.代碼返回true值,超時則停止等待
其中"selenium.browserbot.getUserWindow().jQuery.active == 0"這是一段javascript語句,
意思:檢查得到的窗體里AJAX的活動數(shù)量為0時,則為0即無AJAX活動了,則為真,為真可以繼續(xù)向下運行。反之,在限定的timeout 3秒時間內(nèi),活動數(shù)仍不為0,則會報錯。
常見的框架:
jQuery : “jQuery.active”
Prototype: “Ajax.activeRequestCount”
Dojo : “dojo.io.XMLHTTPTransport.inFlight.length
我們用的是jQuery框架,即寫成jQuery.actiive
3000是3秒。
不正確的解決方法:
for ($second = 0; ; $second++) {
if ($second >= 60) $this->fail("timeout");
try {
if ($this->isElementPresent("css=input[type=submit]")) break;
} catch (Exception $e) {}
sleep(1);
}
此處用的方法:waitForElementPresent(locator,variableName)驗證指定元素在頁面上。
此方法解決AJAX錯誤時無效。其檢驗元素的方法,可解決javascript的問題。常見問題4中會詳解。
常見問題2:服務(wù)器連接不上。
解決方法:目前我們服務(wù)器上同時只能邊接兩臺機器。所以,這兒的解決方法,只能限于兩臺哦。