验收测试(Capybara)找不到我的提交按钮

时间:2014-03-03 18:29:45

标签: capybara rspec-rails acceptance-testing

问题:

如何让我的功能测试识别我的按钮?

说明:

我正在与Capybara一起为“用户可以将产品添加到购物清单”进行验收测试。 在我的设置中,我以用户身份登录,我可以点击当前的购物清单,并将其定向到包含新产品搜索输入的页面。

然后我要求点击按钮 click_button“搜索”

搜索是我的按钮的名称,是页面上显示的内容。当我运行实际程序时,一切正常,但是当我运行测试时,它一直告诉我它找不到搜索按钮。

我试过的:

我尝试在提交按钮上添加值而不是名称 我也试过传递按钮的id 我没有点击按钮,而是尝试将\ n添加到输入字段以输入

  • 当我实际运行程序时,所有这些工作都有效,但它们在我的测试中不起作用。 这是我的代码!会喜欢你可能有的任何见解:)非常感谢提前。

我的代码:

表格:

<form method="GET" action="products/show" />
    <label for="search_input">Search Products:</label>
    <input type="text" name="search_input" id="search_input_field" />
    <input type="submit" value="Search" id="submit_search"/>
</form>  

测试代码:

require 'spec_helper'

describe "a user can add a product to their shopping list" do 
    let!(:user_one) { FactoryGirl.create(:user) }
    let!(:households) do 
        user_one.shopping_lists.create!({
            title: "households",
            date: Date.today
        })
    end

    it "will add product to the list" do 
        login(user_one)
        click_link "View Shopping Lists"
        click_link "households"
        fill_in "search_input_field", with: "toothpaste"
        # save_and_open_page
        click_button "Search"
        # expect(page).to     
        # first(:button, "Add Item").click

        # expect(page).to have_button "Delete"
    end

    def login(user)
        visit root_path
        fill_in :email, with: user.email
        fill_in :password, with: user.password
        click_button "Login!"
    end

end

1 个答案:

答案 0 :(得分:0)

我认为主要问题是Capybara正在寻找一个html标签而不是输入作为按钮。

在您对按钮部分的测试中,请尝试使用

click_on 'Login'