当前位置: 首页 > 面试题库 >

Selenium IDE click()超时

佘飞鸣
2023-03-14
问题内容

我有一个简单的页面,可在提交时返回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中对其进行修补或修复。


问题答案:

我相信这是在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



 类似资料:
  • 当我们所有数据库的 SQL 语句是通过子查询方式完成,对于超时的控制往往很容易被大家忽略。因为大家在代码里看不到任何调用 set_timeout 的地方。实际上 PostgreSQL 已经为我们预留好了两个设置。 请参考下面这段配置: location /postgres { internal; default_type text/html; set_by_lua_blo

  • 你是否正遇到网络或 CPU 的瓶颈? 验证客户端和托管redis-server的服务器上支持的最大带宽。如果有请求被带宽限制,则它们需要更长时间才能完成,从而可能导致超时。 同样,验证您没有在客户端或服务器框上获得CPU限制,这将导致请求等待CPU时间,从而超时。 有没有命令需要在 redis 服务器上处理很长时间? 可能有一些命令需要很长时间才能在redis服务器上处理,导致请求超时。 长时间

  • 套房级 套件级超时可应用于整个测试“套件”,或通过其禁用this.timeout(0)。这将由所有嵌套套件和不覆盖该值的测试用例继承。 describe('a suite of tests', function() { this.timeout(500); it('should take less than 500ms', function(done){ setTimeout(done, 30

  • 我使用命令生成器在Jenkins服务器上运行单元测试。phar exec“codecept运行单元应用程序/模型”-vvv并获取以下错误: [Symfony\Component\Process\Exception\ProcessTimedOutException] 进程“codecept运行单元应用程序/模型”超过了1800秒的超时时间。 我如何修复它并允许测试花费更多的时间?谢谢

  • 你知道是怎么回事吗?

  • 问题内容: 我正在使用SwingWorker通过TCP连接读取数据并在数据返回时显示。 当套接字失效时,例如在writeTo之后,它将永久等待套接字上的输入,从而产生问题。一段时间后最简单的超时方法是什么?是否这也是在这种情况下,最好的解决办法?在该解决方案中,我还会使用摇摆工人吗? 谢谢 问题答案: 是的,您链接到的解决方案是一个合理且简单的解决方案(“ best”太主观了:)您可以利用Swin

  • 示例: timeout 超时机制可以保护服务调用陷入无限的等待之中。超时定义了服务的最长等待时间,如果在给定的时间没有相应,服务调用就进入下一个状态,或者重试、或者立即返回错误。 Server 你可以使用OptionFn设置服务器的 readTimeout 和 writeTimeout。 ```go server struct type Server struct { …… readTimeout

  • 超时对那些连接外部资源的程序来说是很重要的,否则就需要限定执行时间。在Go里面实现超时很简单。我们可以使用channel和select很容易地做到。 package main import "time" import "fmt" func main() { // 在这个例子中,假设我们执行了一个外部调用,2秒之后将结果写入c1 c1 := make(chan string, 1)