【问题标题】:Capybara/Poltergeist pick range of numbers for all text boxes?Capybara/Poltergeist 选择所有文本框的数字范围?
【发布时间】:2016-08-16 04:03:29
【问题描述】:

我在页面上有一系列文本框,用于输入数值(比如说 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 个)

可以这样工作吗:(表格--问题是表格本身的名称)

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

我可能需要使用 test_the_rating 文本框类,因为这行信息上也有按钮(与此测试无关),但它们与此文本框位于同一行.

我想也许我可以使用我知道的 Ruby 的示例来处理这个问题?类似:[*1..10].sample?这行得通吗?

【问题讨论】:

    标签: rspec capybara


    【解决方案1】:

    这里有几件事——

    1. 您声明“table--questions”是表的“名称”,但将其用作类选择器——如果它确实是表上的“名称”属性的值我想要table[name="table-questions"]

    2. 您声明您想要所有文本框,但您的 html 显示它们实际上是“数字”框。如果你确实想要所有的数字框,你可以这样做

      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
      

    【讨论】:

    • 期望找到类型为 :number 的字段 nil 至少 5 次,但没有匹配项。还找到了“”、“”、“”、“”、“”、“”、“”、“”、“”、“”、“”,它们与选择器匹配,但不是所有过滤器。 (这就是我使用它时遇到的错误)。这就是我得到的错误。我不确定它所指的是否可能是其他行字段(评论部分等)
    • @msmith1114 你用的是什么版本的水豚?页面上是否至少有 5 个字段实际可见?
    • @msmith1114 -- whoops -- 类型参数应该是字符串 -- 在示例中已修复
    • 是的,所有 5 个字段都是可见的(数字字段)
    • @msmith1114 inp 只是一个变量 -- all(:field, nil, type: 'number', minimum: 5) 使用 :field 选择器 - github.com/jnicklas/capybara/blob/2.7_stable/lib/capybara/… - 查找所有可见的 input/textarea/select 具有属性类型 == 'number' 的元素 (类型过滤器)- 然后在数组上调用 each 就像结果一样,将每个字段依次分配给变量 inp 并将该字段设置为 1 到 10 的随机值
    猜你喜欢
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多