Не удается получить данные из таблицы с помощью watir-webdriver

0

Я новичок в Ruby и watir-webdriver, и я пытаюсь извлечь данные с веб-сайта и не могу понять, как получить доступ к определенной ячейке в таблице HTML. Я не могу найти идентификатор, имя или класс, чтобы отличить ячейку, в которой я нуждаюсь. Я думаю, что таблица генерируется динамически. Вот что я имею до сих пор:

require 'watir-webdriver'

browser = Watir::Browser.new:firefox
browser.goto 'http://oh-scioto-auditor.publicaccessnow.com/search.aspx'

browser.text_field(:id => "fldSearchFor").set '011234000'

browser.button(:name => 'btnSearch').click

browser.link(:text => 'Parcel Detail').click

puts browser.table(:id => 'lxT380').exists?

browser.td(:index => 0).each do |data|
    puts data.text
end

Когда я использую firebug в firefox для получения уникального селектора, это то, что я получаю:

#lxT380 > div:nth-child(2) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(1) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(2) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(4) > td:nth-child(1)

Это может быть полезно, но, как я уже сказал, я новичок в Ruby, и я не уверен, что с ним делать. Любой вход был бы оценен.

  • 0
    Как пользователь может решить, какая ячейка вам нужна?
  • 0
    @Justin Ko, извините, должен был упомянуть, что я пытаюсь получить платежный адрес, который указан чуть ниже ячейки с адресом налогоплательщика:
Теги:
watir
watir-webdriver

1 ответ

2

Как вы упомянули, проблема с таблицей заключается в том, что существуют отличительные атрибуты. В результате, я думаю, что ваш лучший выбор - найти ячейки:

  1. Поиск известного текста и
  2. Затем найдем нужную ячейку по отношению к этому.

Например, адрес налогоплательщика находится внутри этой таблицы (которая вложена в кучу других не описательных таблиц):

<table class=" ui-corner-all" border="1" width="250">
  <tbody>
    <tr>
      <td colspan="2" class="ui-state-default">Property Address:</td>
    </tr>
    <tr>
      <td colspan="2" height="95" valign="top">3069  GEPHART RD</td>
    </tr>
    <tr>
      <td colspan="2" class="ui-state-default">Tax Payer Address:</td>
    </tr>
    <tr>
      <td colspan="2" height="95" valign="top">FAULKNER PATRICK EUGENE +<br>2112  GEPHART RD<br>WHEELERSBURG OH 45694<br>USA </td>
    </tr>
  </tbody>
</table>

Чтобы получить адрес плательщика, найдите строку, содержащую заголовок "Налоговый плательщик:":

tax_payer_address_label = browser.tr(:text => 'Tax Payer Address:')

Получите следующую строку, которая считается адресом:

tax_payer_address = tax_payer_address_label.tr(:xpath => './following-sibling::tr')

Наконец, получите текст строки/ячейки:

puts tax_payer_address.text
#=> FAULKNER PATRICK EUGENE +
#=> 2112 GEPHART RD
#=> WHEELERSBURG OH 45694
#=> USA 

Как полный рабочий сценарий:

require 'watir-webdriver'

browser = Watir::Browser.new:firefox
browser.goto 'http://oh-scioto-auditor.publicaccessnow.com/search.aspx'

browser.text_field(:id => "fldSearchFor").set '011234000'
browser.button(:name => 'btnSearch').click
browser.link(:text => 'Parcel Detail').click

tax_payer_address_label = browser.tr(:text => 'Tax Payer Address:')
tax_payer_address = tax_payer_address_label.tr(:xpath => './following-sibling::tr')
puts tax_payer_address.text
#=> FAULKNER PATRICK EUGENE +
#=> 2112 GEPHART RD
#=> WHEELERSBURG OH 45694
#=> USA 

Обратите внимание, что вы также можете использовать один xpath, но не так приятно читать/писать:

puts browser.tr(:xpath => '//tr[normalize-space(.) = "Tax Payer Address:"]/following-sibling::tr').text
#=> FAULKNER PATRICK EUGENE +
#=> 2112 GEPHART RD
#=> WHEELERSBURG OH 45694
#=> USA 
  • 0
    Если мне нужна Watir помощь, я просто искать , как Watir и ваше имя .. Вся помощь приходит в списке поиска. Великий Джастин. +1

Ещё вопросы

Сообщество Overcoder
Наверх
Меню