我有以下测试:
def login_user(email, password)
visit new_user_session_path
fill_in 'E-mail', with: email
fill_in 'Password', with: password
click_button 'go'
end
scenario 'some test' do
order = Fabricate(:order_one, company: user.company)
visit "http://127.0.0.1:49645/orders/#{order.id}" # change to visit "/orders/#{order.id}"
login_user(user.email, user.password)
#assert
end
发生的事情是,在第一步(visit...
)中用户未被记录,因此我使用cookie设置了一些信息。但是,当执行login_user
时,此cookie为空。
Usigin selenium-webdriver
这里有什么想法吗?
提前致谢
答案 0 :(得分:0)
当使用支持JS的驱动程序#visit
时,不保证在返回页面时已完成加载页面。由于在处理响应之前未在浏览器中设置cookie,因此login_user
实际上是在告诉浏览器停止处理它当前的访问并访问其他地方以阻止cookie在浏览器中设置。第一次访问后,您需要等待页面上可见的内容,以确保正确设置cookie。
scenario 'some test' do
order = Fabricate(:order_one, company: user.company)
visit "http://127.0.0.1:49645/orders/#{order.id}"
expect(page).to have_content('you are not logged in') #or whatever shows on the page visited
login_user(user.email, user.password)
#assert
end