我想给一个隐藏属性的iput标记值赋一个值,如下SystemSpec中所示。
<input id = "review_rating" type = "hidden" name = "review[rating]">
find('#review_rating', visible:false).set('5')
find('input[name="review[rating]"]', visible:false).set('5')
如果编写第一个选项,FeatureSepc将通过测试。
问题是您不应能够通过常规行为更新隐藏字段,因此不被允许。有关更多信息,请参见讨论here。
问题是为什么,您想测试一下-隐藏字段是否由页面上的另一个元素操纵?如果是这样,请查找并进行交互(单击?)。
另一方面,使用xpath选择器/ Capybara的first
方法适用于此:
find(:xpath, "//input[name="review[rating]"]").set("5")
first('input[name="review[rating]"]', visible: false).set("5")
...但是这可能意味着要调整代码以确保选择器是唯一的,如Mike Heft的评论所建议。
否则,您可以使用普通的旧JS解决问题。有关使用JS选择隐藏元素的想法,请参见here,不过最好还是使用唯一的选择器进行重组:
page.execute_script("document.querySelector('input[name="review[rating]"]').value = '5'");
希望这里有帮助-让我知道你的生活:)