Xpath, чтобы соответствовать определенному тексту - PullRequest
0 голосов
/ 05 июня 2018

У меня есть такая структура HTML:

https://imgur.com/a/8TevWtz

<tbody>
                      <tr data-drupal-selector="edit-strings-996" class="odd">
                      <td><div id="edit-strings-996-original" class="js-form-item form-item js-form-type-item form-type-item js-form-item-strings-996-original form-item-strings-996-original form-no-label">
      <label for="edit-strings-996-original" class="visually-hidden">Source string (Built-in English)</label>
        Search
        </div>
</span></td>
                      <td><div class="js-form-item form-item js-form-type-textarea form-type-textarea js-form-item-strings-996-translations-0 form-item-strings-996-translations-0 form-no-label">
      <label for="edit-strings-996-translations-0" class="visually-hidden">Translated string (Español)</label>
        <div class="form-textarea-wrapper">
  <textarea lang="es" data-drupal-selector="edit-strings-996-translations-0" id="edit-strings-996-translations-0" name="strings[996][translations][0]" rows="1" cols="60" class="form-textarea resize-vertical">Search</textarea>
</div>

        </div>
</td>
                  </tr>
                      <tr data-drupal-selector="edit-strings-1176" class="even">
                      <td><div id="edit-strings-1176-original" class="js-form-item form-item js-form-type-item form-type-item js-form-item-strings-1176-original form-item-strings-1176-original form-no-label">
      <label for="edit-strings-1176-original" class="visually-hidden">Source string (Built-in English)</label>
        Search page
        </div>

Мне нужен Xpath, в котором я могу найти только точный текст «Поиск».Я не могу использовать contains(), потому что он вернет все строки с этим словом, мне нужна только строка со словом «Поиск».Мои знания Xpath невелики, поэтому я попробовал много вещей, таких как:

//tbody/tr/td/div[.='Search']
//tbody/tr/td/div[normalize-space(.)='Search']

//tbody/tr[1]/td/div/. -> Этот работает, но я не могу передать tr[1], потому что я буду использовать этот xpath в автоматизациии текст, который я хочу, не всегда находится в первой строке, поэтому мне нужно найти его по тексту, а не по индексу.

Проблема в том, что все тексты имеют эти пробелы, и мне становится хуже, когда я делаю егоработа.

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Предполагая, что вы ищете div, в котором есть текст, содержащий строку Search, это должно работать:

 //tbody/tr/td/div[contains(., 'Search')]

Это немного грязно в том смысле, что оно также может обнаружить Search в любом местепод div, например, включая текст label's, если применимо.

0 голосов
/ 05 июня 2018

Текстовое содержимое целевого div узла не просто "Search", но "Source string ... Search", поэтому вы можете попробовать

//div[normalize-space(text()[2])='Search']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...