无法将值分配给隐藏属性输入标签的值
A value cannot be assigned to the value of the hidden attribute input tag
我想做的事
我想为隐藏属性的输入标签的值赋值,如下所示在 SystemSpec 中。
<input id = "review_rating" type = "hidden" name = "review[rating]">
我试过的
- 将可见属性设置为 false。
find('#review_rating', visible:false).set('5')
- 尝试将 name 属性而不是 id 作为第一个参数
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 选择隐藏元素的想法,请参阅 ,不过,也许最好使用独特的选择器进行重组:
page.execute_script("document.querySelector('input[name="review[rating]"]').value = '5'");
希望这里的内容对您有所帮助 - 让我知道您的进展情况:)
我想做的事
我想为隐藏属性的输入标签的值赋值,如下所示在 SystemSpec 中。
<input id = "review_rating" type = "hidden" name = "review[rating]">
我试过的
- 将可见属性设置为 false。
find('#review_rating', visible:false).set('5')
- 尝试将 name 属性而不是 id 作为第一个参数
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 选择隐藏元素的想法,请参阅
page.execute_script("document.querySelector('input[name="review[rating]"]').value = '5'");
希望这里的内容对您有所帮助 - 让我知道您的进展情况:)