我有一个编码很差的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”标签可以获得一组锚点,我想知道是否有一个类似的方法可以选择整个复选框
答案 0 :(得分:3)
我认为问题不在于xpath本身。 @browser.checkbox
导致只返回第一个复选框。
如果你想要所有匹配的复选框,你应该使用(注意复数):
@browser.checkboxes
请注意,checkboxes
会返回一组复选框。除非你做的事情非常奇特,否则你通常不需要将它转换为数组。
您可以这样做:
@browser.checkboxes(:name => /delete/).each do |checkbox|
checkbox.set
end