Выбор нескольких элементов с использованием квадратной скобки в конце против заключения целого xpath в фигурные скобки перед квадратными скобками? - PullRequest
0 голосов
/ 20 февраля 2019

Я сталкивался со случаями, когда на странице много ссылок и следующий xpath работает для выбора первой:

// tag [@ ...] / div /a [1]

Существуют другие случаи, когда вышеупомянутый xpath не работает, и тогда мне нужно использовать его следующим образом:

(// tag [@ ...] / div / a) [1]

Когда я пишу более длинные xpath-ы в код в бизнес-логике, для которых выбираются элементы, эта разница становится все более сложной, когда один и тот же xpathимеет несколько комбинаций обоих.

В чем разница между написанием xpaths этими двумя способами?Я видел, что для любого конкретного случая один из них работает, а другой нет.

1 Ответ

0 голосов
/ 20 февраля 2019

Рассмотрим этот пример HTML:

<table>
  <tbody>
    <tr>
      <td>1.1</td>
      <td>1.2</td>
      <td>1.3</td>
    </tr>
    <tr>
      <td>2.1</td>
      <td>2.2</td>
      <td>2.3</td>
    </tr>
    <tr>
      <td>3.1</td>
      <td>3.2</td>
      <td>3.3</td>
    </tr>
  </tbody>
</table>

Здесь вы можете использовать //table/tbody/tr/td[index], чтобы пройти <td> элементов только первого ряда <tr>.//table/tbody/tr вернет первое совпадение, которое является вашей первой строкой, а затем индексация выполняется только для элементов <td> в первой строке.Итак, допустимые индексы 1,2,3.

Но вы можете использовать (//table/tbody/tr/td)[index], если хотите просмотреть все значения <td> в таблице.Здесь индексация применяется ко всему xpath, который одинаков для всех элементов <td>.Итак, допустимые индексы 1,2,3, .. 9.

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