2013-02-12 35 views
2

我有一个编码很差的JSP,我试图运行自动化。有一系列名称(无ID)为“delete [x]”的复选框,其中X是填充项目的项目编号。我正在尝试选择所有复选框,以便我可以删除每个条目。以下是我有在ruby中收集所有xpath结果到一个数组中

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,为节点添加一个索引,然后在这个索引超出边界的情况下进行救援,但这似乎是肮脏的方式。

我知道有一个“为”标记,得到了一套锚,我想知道是否有采取复选框的选择全

+0

他们返回结果集的第一个元素。您可以通过在xpath的末尾添加一个索引来追加它,但您仍然只能得到1个结果 – 2013-02-12 14:02:56

回答

3

我不认为这个问题是这样的方法xpath本身。这是导致只返回第一个复选框的@browser.checkbox

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

@browser.checkboxes 

注意checkboxes回报复选框的集合。除非你做的东西真的很花哨,否则你通常不需要将它转换为数组。

你可以简单地做:

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

必须爱上Ruby的动态语言 – 2013-02-12 14:12:33

相关问题