使用 rails 测试 ruby,未找到元素
Testing ruby with rails, Element not found
我收到错误:
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"),它给出了同样的错误。
我可能做错了什么?
一直在抓耳挠腮
您的代码似乎是正确的。也许你访问错了 url 或你再次使用了 user_email
id
。但是您可以尝试使用如下替代语法:
find("input[id$='user_email']").set "ssd"
通常这是因为输入在页面上实际上不可见。你可以通过做
来验证这一点
fill_in('user_email', with: 'ssd', visible: false)
如果成功找到该元素,那么您需要更改您的测试以首先执行使该字段可见的任何操作,然后再尝试填充它。
我收到错误:
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"),它给出了同样的错误。 我可能做错了什么? 一直在抓耳挠腮
您的代码似乎是正确的。也许你访问错了 url 或你再次使用了 user_email
id
。但是您可以尝试使用如下替代语法:
find("input[id$='user_email']").set "ssd"
通常这是因为输入在页面上实际上不可见。你可以通过做
来验证这一点fill_in('user_email', with: 'ssd', visible: false)
如果成功找到该元素,那么您需要更改您的测试以首先执行使该字段可见的任何操作,然后再尝试填充它。