2016-08-25 66 views
-1

我想找到class'body'的Xpath。 但問題是這兩個類都在另一個表中。如何在不使用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> 
+0

你爲什麼在標題中說「不使用包含」?我看不出爲什麼你想要使用包含,但我也看不出爲什麼你有一個約束不使用它的任何理由。 –

回答

0

爲什麼不使用JavaScript DOM getElementsByClassName呢?但是在XPath中它只是

//*[@class="Body"] 
+0

嗨菲利普,我有兩個同名的類,如上所述,但我想獲得第二個類的值,即開始日期。 – raj

+1

哦gotcha,使用'(// * [@ class =「Body」])[2]。它可能被索引爲0,不記得tbh xpath實際上做了這兩個是另一個故事,所以可能是[1]或[2]。我希望這就是你要找的。 –

2

我看到「TD」有一個文本()屬性,所以如果對方「TD」與同一類屬性的身體有不同的文本(),你可以很可能這個:

"//td[@class = 'body' and text() = 'End date']" 

,如果您有相同屬性的多個元素,你應該使用像條件「和」或做軸,以去那個特定元素。像前同輩,下面的兄弟姐妹等,你可以看到這個網站,以瞭解如何做的XPath軸 http://www.w3schools.com/xsl/xpath_axes.asp

+0

感謝您的回覆,但有沒有其他的方式來找到這個,與出使用包含,文本,我想要宣佈這個定位器在yaml頁 – raj

+0

菲利普斯提到,你可以定位'td'的數組索引: 「// td [@ class = body] [1]」,如果只有兩個具有該類屬性的td,則不會有問題。唯一的缺點是,如果以某種方式更新該頁面並更改數組,那麼xpath將崩潰,這也是爲什麼我試圖避免索引,以及索引可能因瀏覽器而異。 –

0

此XPath,

//td[@class='body'] 

將選擇文檔中的所有元素td@class='body'

如果你有不止一個,你需要告訴我們他們是如何不同以及你想選擇哪一個。缺席的是,所有我們能說的是,

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

是第一個這樣td,並且,

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

是第二次這樣的td

相關問題