我有这个HTML结构:
<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来查找。
问题在于所有文本都有这些空白,这使我的工作变得更糟。
答案 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
文本中(如果适用)。