在水豚中是否可以 select 多个相等的元素?

Is it possible to select multiple equal elements in capybara?

我开始使用以下 gem capybaracucumberSitePrismwebdriver 来研究自动化测试,我发现我经常发生的一件事测试是输入类型字段,如果它们重复。

像这样的:

<input type="text" placeholder="some cool text"/>
<input type="text" placeholder="some cool text"/>
<input type="text" placeholder="some cool text"/>

所以我想知道,是否可以同时在所有字段中定义一些值,例如:

site.find('[placeholder="some cool text"]').set('A simple string')

我很难找到答案,一次定义一个循环没有问题,但我不知道如何同时 select 它们。

find 仅限于返回一个元素,如果你想要多个你会想要使用 all。使用类似

的水豚
page.all('input', text: 'some cool text').each do |inp| 
  inp.set('A simple string')
end

会按照您的要求去做。如果您想确保恰好处理了 3 个匹配元素,您可以使用 count 选项(有 alsominimum, maximum, and between` 选项可用)

page.all('input', text: 'some cool text', count: 3).each do |inp| 
  inp.set('A simple string')
end

更新:既然你已经更新了你可以做的问题

page.all("input[placeholder='some cool text']", count: 3).each do |inp| 
  inp.set('A simple string')
end

但我可能会使用 Capybara 提供的选择器类型,例如

page.all(:fillable_field, placeholder: 'some cool text', count: 3).each do |inp|
  inp.set('A simple string')
end