下面是包含我要为其获取XPath的b(粗体)标记的HTML。
<tbody>
<tr>
<td align="left" style="VERTICAL-ALIGN: top" rowSpan="1" colSpan="1">..</td>
<td align="left" style="VERTICAL-ALIGN: top" rowSpan="1" colSpan="1">
<div class="get-HTML" __listner=" <DIV class=gwt-HTML><B>Xyz</B></DIV>">
<b>Xyz</b>
</div>
</td>
<td align="left" style="VERTICAL-ALIGN: top" rowSpan="1" colSpan="1">
<div class="get-HTML" __listner=" <DIV class=gwt-HTML><B>01/01/2019</B></DIV>">
<b>01/01/2019</b>
</div>
</td>
<td align="left" style="VERTICAL-ALIGN: top" rowSpan="1" colSpan="1">..</td>
<td align="left" style="VERTICAL-ALIGN: top" rowSpan="1" colSpan="1">
<div class="get-HTML" __listner=" <DIV class=gwt-HTML><B>Abc</B></DIV>">
<b>Abc</b>
</div>
</td>
</tr>
</tbody>
我想到了以下xpath://div[@class='get-HTML']/b
,但还有很多其他b标签。
例如,如果我必须阅读下面的标签中的文字,该如何精确?
<td align="left" style="VERTICAL-ALIGN: top" rowSpan="1" colSpan="1">
<div class="get-HTML" __listner="<DIV class=gwt-HTML><B>01/01/2019</B></DIV>">
<b>01/01/2019</b>
</div>`
尝试了这个xpath但没有用:
//div[@class='get-HTML']/b[2]
您能帮我破解这个xpath吗?
答案 0 :(得分:1)
由于所有b
元素上方的HTML树都是相同的-意味着tr/td/div/b
将始终检索3个不同的b
元素,因此您将需要使用索引来访问所需的元素
根据要检索的b
标签,您将需要使用td
元素的索引来获取标签,因为同一级别上有多个td
元素:
//tr/td[index]/div/b
应用此示例,我们可以像这样检索b
标签:
要获取Xyz
://tr/td[2]/div/b
要获取01/01/2019
://tr/td[3]/div/b
要获取abc
://tr/td[5]/div/b
或者,如果您想根据其文本获取b
标记,则路径也不同:
//b[text()='xyz']
但是,这只会给您一个b
元素,并且您必须事先知道其文本,因此,如果您不知道b
元素内的文本,则不需要这种方法。
答案 1 :(得分:0)
如果您想非常具体,请在XPath中添加更多父元素。
始终获得正确的XPath的简便技巧:使用Google Chrome检查器>选择元素>右键单击HTML标签>复制> XPath
在这种情况下:
<tbody>
<tr>
<td align="left" style="VERTICAL-ALIGN: top" rowSpan="1" colSpan="1">..</td>
<td align="left" style="VERTICAL-ALIGN: top" rowSpan="1" colSpan="1">
<div class="get-HTML" __listner=" <DIV class=gwt-HTML><B>Xyz</B></DIV>">
<b>Xyz</b>
</div>
</td>
<td align="left" style="VERTICAL-ALIGN: top" rowSpan="1" colSpan="1">
<div class="get-HTML" __listner=" <DIV class=gwt-HTML><B>01/01/2019</B></DIV>">
<b>01/01/2019</b>
</div>
</td>
<td align="left" style="VERTICAL-ALIGN: top" rowSpan="1" colSpan="1">..</td>
<td align="left" style="VERTICAL-ALIGN: top" rowSpan="1" colSpan="1">
<div class="get-HTML" __listner=" <DIV class=gwt-HTML><B>Abc</B></DIV>">
<b>Abc</b>
</div>
</td>
</tr>
</tbody>
第三个b标签的XPath是:/html/body/div[3]/b
就您而言,也许您不需要删除/html/body/
。这取决于您的HTML代码位于哪些父元素中。
注意:因此,如果使用此精确方法,则在使用不同的父元素时XPath也会更改。例如:在动态生成的页面上实现起来可能会更加困难。