一尘不染

Chrome是否使用XPath 2.0?

selenium

我印象深刻的是,所有最新的浏览器现在都使用XPath 2。当我使用lower-case()uppser- case()(版本2中引入的功能)时,Chrome抛出语法错误。但是,它们较旧的替代方法translate()效果很好。

这是错误还是最新的Chrome实际使用了XPath 1?有没有找到XPath版本的命令/方式?

// Finds the element as expected.
$x('//h2/text()[. = "Delete"]')

// Doesn't find the element (also expected).
$x('//h2/text()[. = "delete"]')

// SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//h2/text()[lower-case(.) = "delete"]' is not a valid XPath expression.
$x('//h2/text()[lower-case(.) = "delete"]')

阅读 327

收藏
2020-06-26

共1个答案

一尘不染

不,Chrome使用XPath 1.0。

您可以将XPath表达式简化为v2.0函数来查看:

$x("lower-case('ABC')")
SyntaxError: Failed to execute 'evaluate' on 'Document': The string 'lower-case('ABC')' is not a valid XPath expression.

尝试使用其他任何XPath 2.0函数current-date()都会产生类似的错误。

除了此类探针之外,没有内置的方法来确定XPath实现的版本。

另一方面,XSLT system-property('xsl:version')可以确定版本1.0与版本2.0。

2020-06-26