2015-04-02 56 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