2015-04-02 61 views
1

的XPath硒使用字符串我有id的(所有div的I恐怕)是這樣的:在與Java

<div id ='p1:pdr0'> 
<div id = 'p1:pdr0:content'> 
<div id = 'p1:pdr0:blahblahblah'> 
... 

我只想找到的第一個。我可以使用整個ID,但第一部分可能會改變。我想做ends-with(@id,'pdr0'),但沒有ends-with()。有人建議使用substring(length-3)。我確實在谷歌查找。它顯示了一個函數,但沒有一個如何在xpath中使用它的具體示例。難道只是//div[fn:(substring(fn:length(@id)-3))]?可能不會。

有人可以告訴我一個在xpath表達式中使用子字符串和id的長度的例子嗎? (順便說一下,確切的id名稱並不完全是這樣的,只要說它們都包含相同的文本,但有些則更多)。

回答

1

ends-with()是XPath 2.0的一部分,因此是cannot be used in your case

有,但是,如果我們談論的是純粹的XPath的方法,它不會幫助,因爲pdr0也存在於其他div元素id屬性。

需要注意的是,如果div元素的順序爲您提供了一個可以依靠的元素的位置(索引從1開始):

//div[contains(@id, 'pdr0')][1] 

越可靠的辦法是使用substring()string-length()模擬ends-with()

//div[substring(@id, string-length(@id) - 3) = 'pdr0'] 
+0

正是我想要的。謝謝 – Tony 2015-04-02 18:42:33

+0

尋找接受按鈕。我知道我以前做過,但我沒有看到它。幾分鐘後 - 發現它;-) – Tony 2015-12-04 14:57:41