一般的
您可以通过与获取单个元素类似的方式获取元素集合。您基本上需要复数元素类型方法。例如:
#Singular method returns first matching div
browser.div
#Pluralized method returns all matching divs
browser.divs
可以使用与单个元素相同的定位器来使用集合。
解决方案
对于您的问题,您可以执行以下操作:
#Iterate over divs that have the class 'month_cell OverridenDay'
browser.divs(:class => 'month_cell OverridenDay').each do |overridden_div|
#Within each div with class 'month_cell OverridenDay',
# iterate over any children divs where the id starts with month
overridden_div.divs(:id => /^month/).each do |div|
#Do something with the div that has id starting with month
puts div.id
end
end
#=> "month-2013-05-0"
如果您需要创建一个包含所有匹配 div 的集合,则需要使用 css 或 xpath 选择器。
使用 css-selector(注意在 watir-webdriver 中,只有 elements 方法支持 css-locators):
divs = browser.elements(:css => 'div.month_cell.OverridenDay div[id^=month]')
divs.each do |e|
puts e.id
end
#=> "month-2013-05-0"
使用 xpath:
divs = browser.divs(:xpath => '//div[@class="month_cell OverridenDay"]//div[starts-with(@id, "month")]')
divs.each do |e|
puts e.id
end
#=> "month-2013-05-0"