在带有 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']
我有 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']