Capybara fill_in with xpath

时间:2014-10-21 07:24:25

标签: ruby-on-rails-4 xpath rspec capybara

我有多个输入字段,其中一个标识为specification,但它们具有不同的属性。我可以很好地找到它们,但我很难弄清楚如何恰当地使用fill_infind。目前我有:

find('//input[@id="specification"][@data-number="1"]').fill_in with: "This first sleeping bag should be 0 degrees F"

Error-- Capybara::Webkit::InvalidResponseError:SYNTAX_ERR: DOM Exception 12

谢谢!

2 个答案:

答案 0 :(得分:2)

首先,fill_in将在find返回的元素中查找文本字段。基本上你要求Capybara找到类似的东西:

<input id="specification" data-number="1">
  <input type="text">
</input>

这不太可能存在。

鉴于您已使用find找到了文本字段,您希望使用set方法输入它:

find('//input[@id="specification"][@data-number="1"]').set("This first sleeping bag should be 0 degrees F")

假设您没有将default_selector更改为:xpath,由于表达式不是有效的CSS选择器,上述内容仍然会失败。您还需要告诉Capybara:正在使用:xpath定位器:

find(:xpath, '//input[@id="specification"][@data-number="1"]').set("This first sleeping bag should be 0 degrees F")

答案 1 :(得分:1)

具有相同ID的多个元素是无效的HTML。你应该从改变它开始。