在带有 Java 的 xpath selenium 中使用子字符串

using substring in xpath selenium with Java

我有 id 个(恐怕所有 div 个)是这样的:

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

我只想找到第一个。我可以使用整个 id,但第一部分可以改变。我想做 ends-with(@id,'pdr0') 但没有 ends-with().

有人建议使用 substring(length-3)。我确实在 google 中查找过。它显示了一个函数,但没有说明如何在 xpath 中使用它的具体示例。只是 //div[fn:(substring(fn:length(@id)-3))] 吗?可能不会。

谁能给我一个在 xpath 表达式中使用 id 的子字符串和长度的例子? (顺便说一句,确切的 id 名称并不完全相同。可以说它们都包含相同的文本,但有些文本更多)。

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

contains(),但是,如果我们谈论的是纯 XPath 方法,那将无济于事,因为 pdr0 也存在于其他 [=16= 的 id 属性中] 元素。

请注意,如果 div 元素的顺序是您提供的顺序,您可以依赖元素的位置(索引从 1 开始):

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

更可靠的选择是使用 substring() with string-length():

模拟 ends-with()
//div[substring(@id, string-length(@id) - 3) = 'pdr0']