我正在尝试自动化显示在网站上的 block 并通过 CMS 表比较其内容。 问题是我已经设法使出现在 UI 上的 block 自动化,但是当我以管理员身份登录并尝试使用迭代将表的内容保存在一个数组中时,我无法做到这一点。
<table id="nodequeue-dragdrop" class="nodequeue-dragdrop sticky-enabled tabledrag-processed sticky-table">
<thead class="tableHeader-processed">
<tbody>
<tr class="draggable odd">
<td>
<a class="tabledrag-handle" href="#" title="Drag to re-order">
<a href="/car-news/moscow/new-text-1">New Text 1</a>
</td>
<td>
<td>2012-06-06 10:24</td>
<td style="display: none;">
<td>
<td>
<td class="position">1</td>
</tr>
<tr class="draggable even">
<td>
<a class="tabledrag-handle" href="#" title="Drag to re-order">
<a href="/car-news/new-cars/text-2">Text 2 </a>
</td>
<td>
<td>2012-06-06 10:29</td>
<td style="display: none;">
<td>
<td>
<td class="position">2</td>
</tr>
<tr class="draggable odd">
<td>
<a class="tabledrag-handle" href="#" title="Drag to re-order">
<a href="/car-news/new-cars/this-is-text-3">This is Text 3</a>
</td>
<td>
<td>2012-06-05 12:55</td>
<td style="display: none;">
<td>
<td>
<td class="position">3</td>
</tr>
我使用的代码是
@text = Array.new
x = 1
y = 0
until x == 10
y = x -1
until y == x
@text[y] = @browser.table(:id,'nodequeue-dragdrop').tbody.row{x}.cell{1}.link(:href =>/car-news/).text
puts @text[y]
y=y+1
end
x=x+1
end
问题是脚本运行成功,但即使我设置了迭代,脚本也只读取第一个元素并显示它的文本,而不会转到第二个、第三个...等等元素。
最佳答案
Justin 正朝着正确的方向前进,使用 ruby 的内置方法迭代集合。但是考虑一下,如果我没看错你的代码,你就知道你在寻找来自特定链接的文本,那么既然你可以收集匹配的链接,为什么还要遍历这些行呢?
link_text_array = Array.new
@browser.table(:id,'nodequeue-dragdrop').links(:href => /car-news/) do |link|
link_text_array << link.text
end
关于ruby - Watir Webdriver : Iterating table and storing its content in an array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10929687/