我正在尝试使用功能规范中的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)
非常感谢任何帮助!