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不会发生这种情况。
我的问题是如何找到这种行为的原因?
答案 0 :(得分:1)
据我所知,我使用webkit并通过selenium传递时失败的大部分测试由于竞争条件而失败。他们与硒一起通过的原因是硒比webkit慢很多(最多慢5倍)。
但我可以通过在发送请求后添加wait_for_ajax
来解决我的大部分测试问题,如下所述:Wait for Ajax with Capybara
希望这有帮助,即使你的问题已经有一年了
答案 1 :(得分:0)
我不知道是否相关,但我确实发现了selenium
和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()