简体   繁体   English

如何使用Watir获取标签文本

[英]How to get a label text using Watir

I'll have HTML 我要有HTML

<div class="checklistbox HOTELS" name="HOTELS">                    
    <label><input type="checkbox" value="1" filters="" />Cat</label>
    <label><input type="checkbox" value="2" filters="" />Dog</label>
    <label><input type="checkbox" value="3" filters="" />Pony</label>
    <label><input type="checkbox" value="4" filters="" />black cat</label>
 </div>

How I can get a text from label, if label contains an unchecked checkbox? 如果标签包含未选中的复选框,如何从标签中获取文本?

browser.checkboxes(:xpath => '//*[@id="HOTELSCONTAINER"]/td[4]/div[2]/label/input').each do |l|
    if l.set? == false
        -- Get a label text -- 
    end
end

There is answer: 有答案:

@i = 0
loop do 
    @i = @i + 1
    if (browser.checkbox(:xpath => '//*[@id="HOTELSCONTAINER"]/td[4]/div[2]/label[' + @i.to_s + ']/input').exists?)
        if  browser.checkbox(:xpath => '//*[@id="HOTELSCONTAINER"]/td[4]/div[2]/label[' + @i.to_s + ']/input').set? == false
                puts browser.element(:xpath => '//*[@id="HOTELSCONTAINER"]/td[4]/div[2]/label[' + @i.to_s + ']').text           
        end
    else
        break
    end
end 

You could: 你可以:

  1. Find the checkboxes that are unchecked 查找未选中的复选框
  2. Navigate to their parent, which would be label 导航至其父级,该父级将为标签
  3. Check the text of the label element. 检查标签元素的文本。

One way would be to use a series of rejects/maps: 一种方法是使用一系列拒绝/贴图:

labels = browser.div(class: 'HOTELS').checkboxes.reject(&:set?).map(&:parent).map(&:text)
p labels
#=> ["Cat", "Dog", "Pony", "black cat"]

It might be more readable to combine the maps: 合并地图可能更易读:

labels = browser.div(class: 'HOTELS').checkboxes.reject(&:set?).map { |box| box.parent.text }
p labels
#=> ["Cat", "Dog", "Pony", "black cat"]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM