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

Posted

技术标签:

【中文标题】验收测试(Capybara)找不到我的提交按钮【英文标题】:Acceptance Test (Capybara) can't find my Submit Button 【发布时间】:2014-03-03 18:29:45 【问题描述】:

问题:

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

说明:

我正在使用 Capybara 编写验收测试,以测试“用户可以将产品添加到购物清单”。 在我的设置中,我以用户身份登录,我可以单击当前购物清单并被定向到带有新产品搜索输入的页面。

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

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

我的尝试:

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

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

我的代码:

形式:

<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

【问题讨论】:

你试过 click_button "submit_search" 吗? 是的......当我在单击提交之前执行 save_and_open_page 时,它​​似乎也没有填写输入字段。但是我的程序应该仍然可以在没有任何内容的情况下工作(它返回一个未找到产品页面)......所以搜索(搜索按钮)继续进行,哈哈。 【参考方案1】:

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

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

click_on 'Login'

【讨论】:

以上是关于验收测试(Capybara)找不到我的提交按钮的主要内容,如果未能解决你的问题,请参考以下文章

Capybara-Webkit:缺少 js/React 并且找不到变量:WeakMap

使用 capybara 进行 rspec2 验收测试

Ember 验收测试:检查按钮是不是已启用

资产预编译后,RSpec / Capybara测试不会通过

Capybara Webkit似乎没有足够快地提交表单

Capybara JavaScript 测试的 XHR 请求存根