Xpath匹配特定文本

时间:2018-06-05 13:21:00

标签: xpath

我有这个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,我只能找到确切的文字&#34;搜索&#34;。我不能使用contains(),因为它将返回带有此单词的所有行,我只需要使用&#34;搜索&#34;只有一个字。 我对Xpath的了解不是很好,所以我尝试了很多东西:

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

//tbody/tr[1]/td/div/. - &gt;这个有效,但是我无法通过tr[1],因为我会在自动化中使用这个xpath,而我想要的文本并不总是在第一行,所以我需要通过Text而不是Index来查找。

问题在于所有文本都有这些空白,这使我的工作变得更糟。

2 个答案:

答案 0 :(得分:2)

目标div节点的文字内容不只是"Search",而是"Source string ... Search",因此您可以尝试

//div[normalize-space(text()[2])='Search']

答案 1 :(得分:0)

假设您正在寻找包含字符串div的文字的Search,这应该有效:

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

它有点脏,因为它也会在Search下的任何地方检测到div,例如包含在label's文本中(如果适用)。