使用 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)

如果成功找到该元素,那么您需要更改您的测试以首先执行使该字段可见的任何操作,然后再尝试填充它。