在ruby中将所有xpath结果收集到一个数组中
我有一个代码非常糟糕的JSP,我正试图在其上运行自动化。有一系列的复选框,其名称(无ID)为“删除[x]”,其中x是填充的项目的项目编号。我正在尝试选择所有复选框,以便删除每个条目。这是我的在ruby中将所有xpath结果收集到一个数组中,ruby,tags,automation,watir,Ruby,Tags,Automation,Watir,我有一个代码非常糟糕的JSP,我正试图在其上运行自动化。有一系列的复选框,其名称(无ID)为“删除[x]”,其中x是填充的项目的项目编号。我正在尝试选择所有复选框,以便删除每个条目。这是我的 check_boxes = [] check_boxes.push(@browser.checkbox(:xpath, "//input[contains(@name,'delete')]")) puts check_boxes.size check_boxes.each do |check_box| c
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”标记可以获得一组锚点,我想知道是否有这样的方法可以选中所有复选框,我认为问题不在于xpath本身。正是
@browser.checkbox
导致仅返回第一个复选框
如果需要所有匹配的复选框,应使用(注意复数形式):
请注意,复选框
返回复选框的集合。除非您正在做一些非常奇特的事情,否则通常不需要将其转换为数组
您可以简单地执行以下操作:
@browser.checkboxes(:name => /delete/).each do |checkbox|
checkbox.set
end
它们返回结果集的第一个元素。您可以通过在xpath的末尾添加一个索引来追加它,但仍然只能得到1个结果,这是ruby的动态语言
@browser.checkboxes(:name => /delete/).each do |checkbox|
checkbox.set
end