我有多个输入字段,其中一个标识为specification
,但它们具有不同的属性。我可以很好地找到它们,但我很难弄清楚如何恰当地使用fill_in
和find
。目前我有:
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
谢谢!
答案 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。你应该从改变它开始。