Capybara/Poltergeist 为所有文本框选择数字范围?

Capybara/Poltergeist pick range of numbers for all text boxes?

我在页面上有一系列文本框,用于输入数值(比如说 1-10)。收视率是多少并不重要,只是它们在 1-10 之间(理想情况下,这些之间的随机数是理想的)

有什么方法可以从页面中抓取所有文本框并用随机数填充它们?

ONE 文本框的 HTML 如下所示:

<td class="surface">
 <div class="form-group integer optional test_the_rating">
  <input id="test_0_rating" class="numeric integer optional form-control" type="number" name="test[the][0][rating]" step="1" data-filter-class="review" data-rate="0" max="10" min="1">
 </div>
</td>

重复了 X 次(每个页面都不同,但在我正在查看的特定页面中重复了 5 次)

这样的东西可以工作吗:(table--问题是 table 本身的名称)

page.all('table.table--questions tbody tr div', minimum: 5).each do |row|
     row.all("test_the_rating").something?
end

我可能需要使用 class 文本框 test_the_rating 因为这一行信息上也有按钮(与此测试无关)但它们是与此文本框在同一行。

我想也许我可以使用我知道的 Ruby 的样本?类似于:[*1..10].sample?这行得通吗?

这里有几件事 --

  1. 您声明 'table--questions' 是 table 的 'name' 但将其用作 class 选择器——如果它确实是您想要 table[name="table-questions"]

  2. table 上的 'name' 属性的值
  3. 你说你想要所有的文本框,但你的 html 显示它们实际上是 "number" 框。如果你确实想要所有的数字框,你可以做类似

    的事情
    page.all(:field, nil, type: 'number', minimum: 5).each do |inp|  #The nil parameter may not be needed depending on the version of Capybara you're using
     inp.set(rand(1..10).to_s)
    end