我有一個簡單的頁面,在提交返回阿賈克斯成功/錯誤信息。表單使用標準的ASP.Net鏈接按鈕提交。硒IDE點擊()超時
我的Selenium測試正確點擊linkbutton,但是click事件超時並失敗。剩下的測試用例條件會通過(因爲硒已成功點擊鏈接並顯示ajax成功消息)。
我能想到的是,由於某種原因,click()正在調用waitForPageToLoad,這就是爲什麼它會超時。有什麼辦法可以抑制這種情況,還是我吠叫錯了樹?
有沒有其他方法來處理點擊,不關心事件發生後會發生什麼?
更多信息:在Vista上的Firefox 3.5.2託管硒IDE 1.0.2(不要問)
解決方法
我已經成功地讓我的測試通過在user-extensions.js中創建我自己的click()函數,它不會不是請致電Selenium.decorateFunctionWithTimeout()。雖然我的測試現在通過,但這不是一個理想的解決方案。
如果您想自己嘗試此操作,請將以下內容添加到user-extensions.js中(請確保通過工具| Selenium IDE |選項|選項|常規| Selenium在Se:IDE配置中引用此文件核心擴展)
Selenium.prototype.doBeatnicClick = function(locator) {
/**
* Clicks on a link, button, checkbox or radio button.
* Hacky workaround for timeout problem with linkbutton.
* Suspect there is an issue with Selenium.decorateFunctionWithTimeout()
*/
var element = this.browserbot.findElement(locator);
var elementWithHref = getAncestorOrSelfWithJavascriptHref(element);
if (browserVersion.isChrome && elementWithHref != null) {
var win = elementWithHref.ownerDocument.defaultView;
var originalLocation = win.location.href;
var originalHref = elementWithHref.href;
elementWithHref.href = 'javascript:try { '
+ originalHref.replace(/^\s*javascript:/i, "")
+ ' } finally { window._executingJavascriptHref = undefined; }';
win._executingJavascriptHref = true;
this.browserbot.clickElement(element);
}
this.browserbot.clickElement(element);
};
重新加載Se:IDE,您將可以訪問一個新命令beatnicClick(),它應該在您遇到click()超時的情況下工作。
希望這可以在下一個版本的Se:IDE中修補或修復。
你能否提供一些細節:目標瀏覽器,操作系統,硒的芯或RC? (該圖像看起來像來自Selenium IDE)。在繼續之前,腳本是否暫停,直到點擊變爲紅色? – bryanbcook 2009-09-08 03:12:46
感謝bryan,更新了我的帖子並提供了一些細節。是的,該腳本暫停,直到點擊()事件失敗(或SE:IDE將其解釋爲失敗更準確地..因爲click事件觸發!) – 2009-09-08 03:24:06