在黄瓜中填写无法访问输入字段的字段

时间:2013-06-10 19:34:14

标签: ruby-on-rails ruby cucumber capybara

我将以下代码作为.erb文件:

<div class="gridster">
<form>
    <fieldset>
        <legend>Add Repository</legend>
        <div class="field">
          <label for="gitrepoURL">GitHub URL</label>
      <input type="url" name="GithubRepo" id="gitrepoURL" placeholder="http://github.com/<organization>/<repo>" required/>
        </div>
        <div class="field">
          <input type="button" name="Add" id="add" value="Add Repository" class="add" />
        </div>
    </fieldset>
</div>

在我写的一个黄瓜单元测试案例中:

When /^I update the input field with a github url $/ do
  visit '/github/index' 
  fill_in "field[GithubRepo]", :with => "http://github.com/name1/name2"
end

我明白我使用不正确的dom来访问GithubRepo。我试图在firebug中正确访问GithubRepo字段以填充网址,但是当用黄瓜运行测试用例时,它没有用,它说

When(/^I update the input field with a github url$/) do
  pending # express the regexp above with the code you wish you had
end

并停止执行低于此测试用例的测试用例。如果我的理解是错误的,请告诉我。如果我是对的,请告诉我如何访问dom元素,以便我可以使用它来访问其他元素并编写其他测试用例

1 个答案:

答案 0 :(得分:4)

我认为你的Cucumber步骤有两个问题:

  1. 正则表达式中有一个额外的空间,这就是为什么Cucumber找不到这个步骤。
  2. 传递给fill_in的值不正确 - 应该是名称,ID或标签文字。
  3. 尝试以下方法:

    When /^I update the input field with a github url$/ do
      visit '/github/index' 
      fill_in "GithubRepo", :with => "http://github.com/name1/name2"
    end
    

    注意到进行了以下更改:

    1. 在正则表达式结束时(即在url和$之间)删除了空格。
    2. fill_in已更改为使用字段的名称。