将所有xpath结果收集到ruby中的数组中

时间:2013-02-12 13:56:47

标签: ruby tags automation watir

我有一个编码很差的JSP,我试图在其上运行自动化。有一系列复选框,其名称(无ID)为“delete [x]”,其中X是填充项目的项目编号。我试图选中所有复选框,以便删除每个条目。这就是我所拥有的

check_boxes = []
check_boxes.push(@browser.checkbox(:xpath, "//input[contains(@name,'delete')]"))
puts check_boxes.size

check_boxes.each do |check_box|
check_box.set

这个问题是它只选择匹配xpath的第一个实例(节点)转储到数组中。我知道我可以迭代遍历xpath为节点添加一个索引,然后在索引超出界限时放弃我,但这似乎是一种肮脏的方式。

我知道有一个“as”标签可以获得一组锚点,我想知道是否有一个类似的方法可以选择整个复选框

1 个答案:

答案 0 :(得分:3)

我认为问题不在于xpath本身。 @browser.checkbox导致只返回第一个复选框。

如果你想要所有匹配的复选框,你应该使用(注意复数):

@browser.checkboxes

请注意,checkboxes会返回一组复选框。除非你做的事情非常奇特,否则你通常不需要将它转换为数组。

您可以这样做:

@browser.checkboxes(:name => /delete/).each do |checkbox|
  checkbox.set
end