Html 如何在不使用contains的情况下查找XPath

Html 如何在不使用contains的情况下查找XPath,html,xml,xpath,Html,Xml,Xpath,我想找到类“body”的Xpath。 但问题是这两个类也在另一个表中 <td colspan="2" valign="middle"> <a style="display: block;text-decoration:none;color:#000;" href="/Pages/Requests.aspx?type=C"> <table class="special"> <tr style="height: 48px;"> <

我想找到类“body”的Xpath。 但问题是这两个类也在另一个表中

<td colspan="2" valign="middle"> 

<a style="display: block;text-decoration:none;color:#000;" href="/Pages/Requests.aspx?type=C"> 

<table class="special"> 

<tr style="height: 48px;"> 

<td class="single_td_width" align="center">● 

</td> 

<td align="left" class="body" style="color: #000; text-align: left;">End date</td> 

<td colspan="2" valign="middle"> 

<a style="display: block;text-decoration:none;color:#000;" href="/Pages/Requests.aspx?type=C"> 

<table class="special"> 

<tr style="height: 48px;"> 

<td class="single_td_width" align="center">● 

</td> 

<td align="left" class="classDate" style="color: #000; text-align: left;">Start date</td> 

● 
结束日期
● 
开始日期

为什么不改用JavaScript DOM GetElementsByCassName?但在XPath中,它只是

/*[@class=“Body”]

我看到'td'有一个text()属性,因此如果具有相同类属性体的另一个'td'有一个不同的text(),您可以这样做:

"//td[@class = 'body' and text() = 'End date']"
如果有多个具有相同属性的元素,则可能应该使用“and”或“do axes”等条件转到该特定元素。像前面的兄弟姐妹,下面的兄弟姐妹等,你可以看到这个网站来学习如何做XPath 此XPath

//td[@class='body']
将使用
@class='body'
选择文档中的所有
td
元素

如果您有多个,您需要告诉我们它们有什么不同,以及您希望选择哪一个。如果没有这一点,我们只能说

(//td[@class='body'])[1]
是第一个这样的
td
,并且

(//td[@class='body'])[2]

是第二个这样的
td

你好,philip,我有两个与上面提到的同名的类,但我想得到第二个类值,即开始日期。哦,明白了,使用“(/*[@class=“Body”])[2]。它可能被0索引,不记得tbh xpath实际上同时执行这两个操作,这是另一个故事,所以可能是[1]或[2]。我希望这就是你要找的。谢谢你的回复,但是有没有其他方法可以找到这个,不使用contains,text,我想在yaml页面声明这个定位器正如Phillips提到的,你可以通过数组的索引来定位,比如:“//td[@class=body][1]”,如果你只有两个带有该类属性的td,你就不会有问题。唯一的缺点是,如果此页面以某种方式更新,而数组发生更改,xpath将崩溃,这就是我试图避免索引的原因,而且索引可能会因浏览器而异。为什么在标题中说“不使用包含”?我看不出你为什么要使用contains,但我也看不出你为什么会有不使用contains的限制。