我开始研究使用以下宝石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')
我很难找到答案,一次定义一个循环不会有问题,但我不知道如何同时选择它们。
find
仅限于返回一个元素,如果需要多个元素,则需要使用all
。使用类似的Capybara
page.all('input', text: 'some cool text').each do |inp|
inp.set('A simple string')
end
会按照你的要求去做。如果你想确保处理的是正好3个匹配的元素,你可以使用count
选项(在"可用选项"之间有also
最小值,
最大值, and
(
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