2

我有一个代码非常糟糕的 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”标签可以获取一组锚点,我想知道是否有类似的方法来获取整个复选框的选择

4

1 回答 1

3

我认为问题不在于 xpath 本身。这@browser.checkbox是导致仅返回第一个复选框的原因。

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

@browser.checkboxes

请注意,它checkboxes返回一组复选框。除非您正在做一些非常花哨的事情,否则您通常不需要将其转换为数组。

你可以简单地做:

@browser.checkboxes(:name => /delete/).each do |checkbox|
  checkbox.set
end
于 2013-02-12T14:08:34.147 回答