Capybara不等待ajax完成

时间:2016-12-23 00:20:54

标签: ruby-on-rails rspec capybara

我正在尝试使用功能规范中的rspec和cpaybara来测试注册流程。注册通过ajax发生,capybara不等待请求完成。我正在使用文档中指定的水豚匹配器。如果我添加一个sleep语句,测试成功

let(:user) { create(:user, email: 'test@example.com', password: 'password') }

scenario 'visitor can sign up with valid email address and password', js: true do
   sign_up_with('Name', 'test@example.com', 'password')
   expect(page).to have_content(I18n.t( 'devise.registrations.signed_up'))
end

处理注册的帮助方法:

def sign_up_with(name, email, password)
  visit root_path
  find(:xpath,"//a[text()='Join']").click

  within("#sign_up_choices") do
    click_on "Sign up with Email"
  end

  within("#sign_up") do
    fill_in 'user[name]', with: name
    fill_in 'user[email]', with: email
    fill_in 'user[password]', with: password
    click_button 'Sign up'
  end
end

当用户点击注册时,表单将通过ajax提交。

我偶尔会遇到错误:

硒::的webdriver ::错误:: StaleElementReferenceError:        陈旧元素引用:元素未附加到页面文档          (会议信息:chrome = 55.0.2883.95)          (驱动信息:chromedriver = 2.25.426935(820a95b0b81d33e42712f9198c215f703412e1a1),platform = Mac OS X 10.11.4 x86_64)

非常感谢任何帮助!

0 个答案:

没有答案