使用rails测试ruby,找不到Element

时间:2015-09-02 13:08:37

标签: ruby-on-rails rspec capybara

我收到错误:

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”),它给出了同样的错误。 我可能做错了什么? 我一直在摸不着头脑。

2 个答案:

答案 0 :(得分:1)

通常原因是输入在页面上实际上不可见。您可以通过执行

来验证这一点
fill_in('user_email', with: 'ssd', visible: false)

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

答案 1 :(得分:0)

您的代码似乎正确。可能是您访问了错误的网址,或者您再次使用了user_email id。但您可以尝试使用以下替代语法:

find("input[id$='user_email']").set "ssd"