我希望提取html表,匹配一个列值,然后单击Ruby Automation中相应匹配行上的另一个列链接

时间:2018-02-24 18:52:44

标签: ruby automation nokogiri

我是Ruby的新手,仍然处于初学者阶段并努力实现这一目标。任何有关这方面的帮助将不胜感激。 我使用nokogiri解析此表,​​找到选择的活动匹配,然后单击匹配行的另一列上的详细信息链接

<tbody>
 <tr class="GridRowOdd">
  <td align="centre" title="Select Activity">
    <a class="gridLink" title="Select Activity"
     href="https://something/something.context=Level-1&selectedRow=1">payment</a>
  <td>
  <td align-"centre">02/21/2018</td>
  <td align-"centre">$8.47</td>
  <td align-"centre" title="Details">
    <a class="gridLink" title="Details"
     href="https://...something/something.context=Level-
      1&selectedRow=1">Details</a>
  </td>
</tr>
<tr class="GridRowEven">
  <td align="centre" title="Select Activity">
    <a class="gridLink" title="Select Activity"
     href="https://something/something.context=Level-1&selectedRow=2">Loan Activity</a>
  <td>
  <td align-"centre">02/21/2018</td>
  <td align-"centre">$8.47</td>
  <td align-"centre" title="Details">
    <a class="gridLink" title="Details"
     href="https://...something/something.context=Level-
      1&selectedRow=2">Details</a>
  </td>
</tr>

我试过这个,它找到了匹配,但总是点击第一个详细信息链接(我明白我不是在迭代并找到正确的行和列来点击它,但我不知道该怎么做)

require ópen-uri'
require 'nokogiri'
link(:details_link, :title => "Details")
doc = Nokogiri::HTML(open(html)
table = doc.xpath('//table//tbody//tr[3]//td[2]//table//tbody//tr[2]//td//'
if table.include? "Loan Activity"
self.details_link
end

1 个答案:

答案 0 :(得分:0)

require 'watir'

b = Watir::Browser.new

b.goto 'paste your URL here'

#I assume only one table appear so I used the below xpath

b.table(xpath: '//table').rows.each do |row|
  if row.cell(text: 'Loan Activity').exists?
    row.cell(text: 'Details').click
  end
end