【问题标题】:How to loop through links and click each one using Watir如何使用 Watir 遍历链接并单击每个链接
【发布时间】:2010-08-17 14:38:34
【问题描述】:

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

我想编写一个单独的 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

【问题讨论】:

  • 你能发布一些相关的 HTML 吗?

标签: ruby watir


【解决方案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

希望有帮助!

【讨论】:

  • 这正是我最终要做的,我只是忘了回来回答我自己的问题:) 你是对的,我们需要在一个循环中识别链接,然后在另一个循环中单击它们。
猜你喜欢
  • 2016-12-19
  • 1970-01-01
  • 2017-10-14
  • 2011-11-12
  • 1970-01-01
  • 1970-01-01
  • 2014-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多