验收测试(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)找不到我的提交按钮的主要内容,如果未能解决你的问题,请参考以下文章