我有一个简单的页面,在提交返回阿贾克斯成功/错误信息。表单使用标准的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