3
  it 'allows a new user to sign up', :js do
    Capybara.current_driver = :selenium
    visit '/'
    click_link 'Sign up'
    old_count = User.all.size
    within '#userModal' do
      fill_in 'user[name]', with: 'some'
      fill_in 'user[email]', with: 'some@test.com'
      fill_in 'user[password]', with: '123123123'
      fill_in 'user[password_confirmation]', with: '123123123'
      d=find('input[type=submit]')
      p d
      p d.class
      d.click
      User.all.size.should == old_count + 1
    end
  end

这种方式有效,在删除驱动程序选择时失败。

使用硒我进入日志:

Started POST "/users" for 127.0.0.1 at 2013-10-29 00:51:36 -0500
Processing by Users::RegistrationsController#create as HTML

虽然 Webkit 不会发生这种情况。

我的问题是如何找到这种行为的原因?

4

2 回答 2

1

据我所知,我在使用 webkit 并通过 selenium 时失败的大多数测试都是由于竞争条件而失败的。他们通过 selenium 的原因是 selenium 比 webkit 慢很多(最多慢 5 倍)。

wait_for_ajax但是我可以通过在发送我的请求后添加一个 webkit 来修复我的大部分测试,如下所述: Wait for Ajax with Capybara

希望这会有所帮助,即使您的问题已经存在一年了

于 2015-03-02T15:34:59.030 回答
0

我不知道是否相关,但我确实弄清楚了我在seleniumand之间看到的不一致webkit。有时,在 capybara-webkit 中似乎没有触发 javascript 验证,而selenium无论我使用的是chrome还是firefox.

这是片段:

# reliably trigger validation in webkit for client_side_validations
if webkit?
  page.execute_script %Q{ $('form[data-validate]').validate() }
end

我的要点解释了其余部分。

对于遇到验证和模态问题的人来说,另一个花絮是,我们发现我们需要在元素变得可见时初始化验证器。

$('#invite_modal').on 'shown.bs.modal', ->
  $(ClientSideValidations.selectors.forms).validate()
于 2013-11-21T19:59:33.370 回答