3

我正在使用 Watir-webdriver 0.6.1 运行 Cucumber 1.2.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。

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

欢迎任何建议:)

4

1 回答 1

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
于 2012-10-19T14:00:45.823 回答