XPath соответствующий текст в таблице - Ruby - Nokigiri - PullRequest
1 голос
/ 09 февраля 2012

У меня есть таблица, которая выглядит следующим образом

<table cellpadding="1" cellspacing="0" width="100%" border="0">
  <tr>
      <td colspan="9" class="csoGreen"><b class="white">Bill Statement Detail</b></td>
  </tr>
  <tr style="background-color: #D8E4F6;vertical-align: top;">
      <td nowrap="nowrap"><b>Bill Date</b></td>
      <td nowrap="nowrap"><b>Bill Amount</b></td>

      <td nowrap="nowrap"><b>Bill Due Date</b></td>
      <td nowrap="nowrap"><b>Bill (PDF)</b></td>
  </tr>
</table>

Я пытаюсь создать XPATH, чтобы найти эту таблицу, в которой она содержит подробное описание выписки из счета. Я хочу всю таблицу, а не только тд.

Вот что я пробовал до сих пор:

page.parser.xpath ( '// таблица [содержит (текст (), "Bill")]')

page.parser.xpath ('// table / tbody / tr [содержит (text (), "Сведения о выписке счета")]')

Любая помощь приветствуется

Спасибо!

Ответы [ 3 ]

1 голос
/ 09 февраля 2012

Ваш первый пример XPath наиболее близок к тому, что вы выбираете table.Второй пример, если он когда-либо совпадал, выбрал бы tr - этот не будет работать в основном потому, что, согласно вашему примеру, нужный вам текст находится в узле b, а не в узле tr.

Это решение настолько неопределенно, насколько я мог бы сделать, из-за *.Если целевой текст всегда будет под b, измените его на descendant::b:

//table[contains(descendant::*, 'Bill Statement Detail')]

Это так же конкретно, учитывая пример, как я могу сделать:

//table[tr[1]/td/b['Bill Statement Detail']]
0 голосов
/ 20 июня 2014

Предлагаемые коды не работают, если слово соответствия не находится в первом ряду.См. Соответствующий пост Найти таблицу, содержащую определенный текст

0 голосов
/ 09 февраля 2012

Возможно, вы захотите

// таблица [содержит (потомок :: текст (), «Сведения об выписке счета»)]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...