根本的解決方法:
$this->waitForCondition("selenium.browserbot.getUserWindow().jQuery.active == 0", "3000"); //此處3000,即限定的超時(shí)時(shí)間timeout。
$this->click("css=input[type=submit]");
解釋waitForCondition用法:
waitForCondition(JavaScriptSnippet,time)
-在限定時(shí)間內(nèi),等待一段JavaScript.代碼返回true值,超時(shí)則停止等待
其中"selenium.browserbot.getUserWindow().jQuery.active == 0"這是一段javascript語(yǔ)句,
意思:檢查得到的窗體里AJAX的活動(dòng)數(shù)量為0時(shí),則為0即無(wú)AJAX活動(dòng)了,則為真,為真可以繼續(xù)向下運(yùn)行。反之,在限定的timeout 3秒時(shí)間內(nèi),活動(dòng)數(shù)仍不為0,則會(huì)報(bào)錯(cuò)。
常見(jiàn)的框架:
jQuery : “jQuery.active”
Prototype: “Ajax.activeRequestCount”
Dojo : “dojo.io.XMLHTTPTransport.inFlight.length
我們用的是jQuery框架,即寫(xiě)成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)驗(yàn)證指定元素在頁(yè)面上。
此方法解決AJAX錯(cuò)誤時(shí)無(wú)效。其檢驗(yàn)元素的方法,可解決javascript的問(wèn)題。常見(jiàn)問(wèn)題4中會(huì)詳解。
常見(jiàn)問(wèn)題2:服務(wù)器連接不上。
解決方法:目前我們服務(wù)器上同時(shí)只能邊接兩臺(tái)機(jī)器。所以,這兒的解決方法,只能限于兩臺(tái)哦。