我正在尝试根据位于另一个<td></td>
标记中的文本选择位于<td></td>
标记中的特定div。可能html代码将更容易描述它:
<tr>
<td>
<div class="name">test1</div>
</td>
<td>
<div class="created">Tom</div>
</td>
<td>
<div class="custom">Disabled</div>
</td>
<td>
<div class="custom">Failed</div>
</td>
</tr>
<tr>
<td>
<div class="name">test2</div>
</td>
<td>
<div class="created">Tom</div>
</td>
<td>
<div class="custom">Disabled</div>
</td>
<td>
<div class="custom">Failed</div>
</td>
</tr>
<tr>
<td>
<div class="name">test3</div>
</td>
<td>
<div class="created">Kate</div>
</td>
<td>
<div class="custom">Disabled</div>
</td>
<td>
<div class="custom">Failed</div>
</td>
</tr>
因此,在此示例中,我想通过Xpath选择的是第二行和div,其中包含Failed
文本。但是我不能使用索引,因为大小和位置并不总是恒定的,并且会随时间变化。因此,在我的案例test2
中,唯一的字段是div,其名称为class。
我当时正在考虑使用following-sibling
。也许是这样的:
\\tr\div[@class='name' and text()='test1']
,但接下来呢? div
不是兄弟姐妹,而td
是兄弟姐妹。
有什么想法吗?
答案 0 :(得分:1)
我能够使用以下方法解决它:
//td/div[text()='test1']/ancestor::tr/td/div[@class='custom' and text()='Failed']
答案 1 :(得分:1)
如果您尝试根据“测试名称”获取测试状态,请使用以下xpath。
(//div[normalize-space(.)='test2' and @class='name']/ancestor::tr//div)[last()]