在水豚中是否可以 select 多个相等的元素?
Is it possible to select multiple equal elements in capybara?
我开始使用以下 gem capybara
、cucumber
、SitePrism
、webdriver
来研究自动化测试,我发现我经常发生的一件事测试是输入类型字段,如果它们重复。
像这样的:
<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
选项(有 also
minimum,
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
我开始使用以下 gem capybara
、cucumber
、SitePrism
、webdriver
来研究自动化测试,我发现我经常发生的一件事测试是输入类型字段,如果它们重复。
像这样的:
<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
选项(有 also
minimum,
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