一尘不染

Selenium IDE click()超时

selenium

我有一个简单的页面,可在提交时返回ajax成功/错误消息。该表单是使用标准ASP.Net链接按钮提交的。

我的Selenium测试正确地单击了链接按钮,但是单击事件超时并失败。其余测试用例条件通过(因为selenium成功单击了链接,并显示了ajax成功消息)。

我能想到的是,由于某种原因,click()调用waitForPageToLoad,这就是它超时的原因。有什么办法可以抑制这种情况,还是我叫错了树?

有没有其他方法可以处理不在乎事件触发后会发生什么的点击?

更多信息:Vista上的Firefox 3.5.2中托管的Selenium IDE 1.0.2(不要问)

怪异的


解决方法

我设法通过在 调用 Selenium.decorateFunctionWithTimeout()的 user-
extensions.js中创建自己的click()函数来通过测试。虽然我的测试现在通过了,但这并不是一个理想的解决方案。

如果您想自己尝试,请将以下内容添加到user-extensions.js中(确保通过工具| Selenium IDE |选项|选项|常规| Selenium
Core扩展,在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中对其进行修补或修复。


阅读 562

收藏
2020-06-26

共1个答案

一尘不染

我相信这是在OpenQA Jira中提出的:http
://jira.openqa.org/browse/SIDE-316
。在此也进行了讨论:http :
//clearspace.openqa.org/message/64455

在问题解决之前,您可以还原到Selenium IDE的1.0b2版本http://release.seleniumhq.org/selenium-
ide/1.0-beta-2/,但是除非禁用扩展,否则它不会安装在Firefox
3.5.x上about:config中的.checkCompatability。请参阅http://kb.mozillazine.org/Extensions.checkCompatibility

2020-06-26