坚持使用watir尝试创建一个循环来单击表中包含的所有链接。目前该表格具有以下格式:
<table id="test">
<tbody><tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Link</th>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
<td><a href="http://facebook.com">http://facebook.com</a></td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td><a href="http://google.com">http://google.com</a></td>
</tr>
</tbody></table>
我目前的尝试看起来像:
browser.table(:id => "test").rows do |tr|
tr.each do |td|
td.links.click
end
end
上面的代码在浏览器中没有任何功能。既不返回终端中的内容(没有错误,也没有输出)。
还尝试了使用列的不同方法:
columns = browser.table(:id => "test").strings.transpose
browser.columns.each do |t|
t.click
browser.back
end
输出此错误:jsfiddle.rb:24:<main>': undefined method
列'中的#(NoMethodError)
答案 0 :(得分:1)
较新版本的Watir version 6.0会自动尝试重新定位陈旧元素。因此,只要初始页面每次重新加载时都不会更改,您就不再需要在单击链接之前保存某种参考数据。
它变成了:
my_table = browser.table(:id, 'test')
my_table.links.each do |link|
link.click
browser.back
end
答案 1 :(得分:0)
这应该可以点击表格中的每个链接:
my_table = browser.table(:id, 'test')
table_links = my_table.links.map(&:text)
table_links.each do |link_text|
my_table.link(:text, link_text).click
browser.back
end
主要基于Justin Ko的回答here。