我收到错误:
Capybara::ElementNotFound:
Unable to find field "user_email"
这是测试代码:
feature 'User' do
given!(:user) { User.new(email: 'testuserid@example.com', encrypted_password: 'test') }
scenario 'opens sign_up page' do
visit new_user_session_path
expect(page).to have_content 'unique text on the page'
end
scenario 'signs in with invalid email' do
visit new_user_session_path
fill_in('user_email',with: 'ssd')
expect(page).to have_content 'unique text on the page'
end
end
我的HTML文件字面上包含以下代码:
unique text on the page
<br>
<input type="text" id="user_email">
因此,这证明路径正确,因为我的第一个场景正确运行。它正在访问右侧页面。但是我仍然在fill_in中遇到第二种情况的错误。 我也试过了element = page.find(“user_email”),它给出了同样的错误。 我可能做错了什么? 我一直在摸不着头脑。
答案 0 :(得分:1)
通常原因是输入在页面上实际上不可见。您可以通过执行
来验证这一点fill_in('user_email', with: 'ssd', visible: false)
如果成功找到该元素,那么您需要更改测试,以便在尝试填充之前首先执行使该字段可见的任何操作。
答案 1 :(得分:0)
您的代码似乎正确。可能是您访问了错误的网址,或者您再次使用了user_email
id
。但您可以尝试使用以下替代语法:
find("input[id$='user_email']").set "ssd"