我试图使用XPath函数contains(),它有2个部分的字符串,但它抛出了无效的xpath错误

时间:2016-12-26 09:25:29

标签: xpath webdriver

我正在尝试使用XPath函数contains(),该函数有2个部分的字符串,但在评估时会抛出“无效的xpath表达式”错误。

这是我想要实现的目标:

正常工作xpath:

//*[contains(text(),'some_text')]

现在我想把它分成2部分,因为其间填充了一些随机文本:

//*[contains(text(),'some'+ +'text')]

我所做的是使用'+''+'来连接表达式中的字符串,就像我们在Java中一样。请建议我如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

您可以在一个谓词表达式中组合2 contains()来检查文本节点是否包含2个特定子字符串:

//*[text()[contains(.,'some') and contains(.,'text')]]

<强> demo

如果您需要更加具体,确保'text'位于文本节点'some'之后的某个位置,那么您可以使用substring-after()contains()的组合作为如下所示:

//*[text()[contains(substring-after(.,'some'),'text')]]

<强> demo

如果每个目标元素总是包含一个文本节点,或者如果在元素中找到多个文本节点时只需要考虑第一个文本节点,那么上面的XPath可以简化一下,如下所示:

//*[contains(substring-after(text(),'some'),'text')]