如何循环链接并使用Watir单击每个链接

时间:2009-11-03 20:46:24

标签: ruby watir

我有一个带网格的网页,有些列在列标题中有一个链接,它将按该列对值进行排序[通过往返到服务器]。

我想编写一个Watir测试来识别那些排序链接并连续点击每个链接。这是一个冒烟测试,可确保排序表达式不会产生运行时异常。

我的问题是,(1)识别这些链接的最佳方法是什么,以及(2)连续点击每一个链接?这就是我到目前为止所做的:

$ie.table(:id, "myGrid").body(:index, 1).each do | row |
  row.each do | cell |
    ## todo: figure out if this contains a sort link
    ## todo: click the link now, or save a reference for later?
  end
end

1 个答案:

答案 0 :(得分:1)

我认为无法单击循环内的每个链接,因为单击链接会触发页面加载,我相信这会使其他Watir链接元素无效。

所以,我建议你拿走链接的ID,然后在点击时互相循环。


例如,我会为这些排序链接和一个有意义的id添加一个特定的类。 有点像:

<a id='sortby-name' class='sorting' href='...'>Name</a>

然后你可以用它来选择它们:

$ie.table(:id, "myGrid").body(:index, 1).each do | row |
  # pick sorting links' ids
  sorting_link_ids = row.links.select{|x| x.class_name == "sorting"}.map{|x| x.id}
end

然后,你点击这样做:

sorting_link_ids.each do |link_id|
  $ie.table(:id, "myGrid").body(:index, 1).link(:id, link_id).click
end

希望有所帮助!