【问题标题】:Timeout on javascript form only running Cucumber on Jenkinsjavascript 表单上的超时仅在 Jenkins 上运行 Cucumber
【发布时间】:2012-10-18 10:06:43
【问题描述】:

我正在运行 Cucumber 1.2.1 和 Watir-webdriver 0.6.1 来测试网页。

本地所有测试运行正常,但是尝试在 CI 机器 (Jenkins) 上启动它们时,我在填写 javascript 表单时超时。我有一个电子邮件和密码文本字段,但 Cucumber 无法填写它们。有几次,两分钟后,只填写了电子邮件文本字段...

javascript 表单正确打开。这是打开它的链接:

`<a id="user_popup" class="textuser_popup" url="/en/bla/" href="javascript:void(0);" trackclick="click/unlogged/test/test/login" rel="nofollow"  gaclick="/en/bla/homepage/click:header-section>login">Sign in</a>`

加载表单后,电子邮件和密码的代码为:

<ul class="signin">
<li class="reg_form">
<label class="reg_form_label">Your email</label>
<input id="yourEmail" class="l_email" type="text" value="" name="email">
</li>
<li class="password_area">
<label class="reg_form_label">Your password</label>
<input id="yourPassword" class="l_password" type="password" name="password">
</li>
</ul>

我使用 PageObject 但直接在步骤上调用元素也不起作用。这就是我填写字段的方式:

@browser.text_field(:id, "yourEmail").set("email@domain.com")
@browser.text_field(:id, "yourPassword").set("thePass")

最后报错是:

execution expired (Timeout::Error)
/usr/lib/ruby/1.8/timeout.rb:64:in `rbuf_fill'
/usr/lib/ruby/1.8/net/protocol.rb:134:in `rbuf_fill'
/usr/lib/ruby/1.8/net/protocol.rb:116:in `readuntil'
/usr/lib/ruby/1.8/net/protocol.rb:126:in `readline'
/usr/lib/ruby/1.8/net/http.rb:2028:in `read_status_line'
/usr/lib/ruby/1.8/net/http.rb:2017:in `read_new'
/usr/lib/ruby/1.8/net/http.rb:1051:in `request'
/usr/lib/ruby/1.8/net/http.rb:1037:in `request'
/usr/lib/ruby/1.8/net/http.rb:543:in `start'
/usr/lib/ruby/1.8/net/http.rb:1035:in `request'

在本地启动测试时,它工作得非常好。不知道为什么远程运行时失败。远程浏览器(通常在无头模式下运行,但我打开了 X11 会话来查看执行情况)是 Firefox ESR 10.0.8,操作系统是 CentOS。

请问您对正在发生的事情有什么建议吗?如果您需要有关该问题的更多信息,请询问。

欢迎任何建议:)

【问题讨论】:

    标签: javascript continuous-integration jenkins cucumber watir-webdriver


    【解决方案1】:

    我遇到了同样的问题,我在 env.rb 文件中添加了以下代码行,现在它可以正常工作了。

    client = Selenium::WebDriver::Remote::Http::Default.new
    client.timeout = 300 # seconds – default is 60
    $browser = Watir::Browser.new :firefox, :http_client => client
    

    【讨论】:

    • 感谢您的提示!它可以工作,但需要 9 分钟(!!)来填充两个文本字段是不可接受的。仍然想知道问题出在哪里;当弹出窗口出现时,command_processor.js 的执行速度可能非常慢......
    • 在此之后仍然超时。正如 Jano 所提到的,这并没有真正解决问题,只是等待更长时间......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    相关资源
    最近更新 更多