【发布时间】:2022-10-03 08:41:45
【问题描述】:
我试图获取内部文本以A new payment 开头并以was created 结尾的元素。
<span>A new payment pi_123432 for $40.03 USD was created</span>
var xpath = \"//span[starts-with(text(), \'A new payment\') and ends-with(text(), \'was created\')]\";
var matchingElement = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
我收到not a valid XPath expression
Uncaught DOMException: Failed to execute \'evaluate\' on \'Document\': The string \'//span[starts-with(text(), \'A new payment\') and ends-with(text(), \'was created\')]\' is not a valid XPath expression.
当我分解它时,这个 xpath 有效:
var xpath = \"//span[starts-with(text(), \'A new payment\')]\";
但是这个 xpath 抛出了同样的错误
var xpath = \"//span[ends-with(text(), \'was created\')]\"
但我说不出为什么。
我在铬上。
-
ends-with 在浏览器可能不支持的 XPath 2.0 上有效。 stackoverflow.com/a/40935676/2834978
-
这回答了你的问题了吗? Xpath \"ends-with\" does not work
-
如果您在浏览器中需要 XPath 2.0(或 3.0 或 3.1),请尝试 SaxonJS。
标签: javascript html xpath xpath-2.0 xpath-1.0