为什么XPath被认为比CSS选择器慢?

为什么XPath被认为比CSS选择器慢?,xpath,selenium-webdriver,css-selectors,Xpath,Selenium Webdriver,Css Selectors,使用SeleniumWebDriver,在HTML中查找元素时,为什么认为XPath比CSS选择器慢?我通常使用XPath和动态XPath 有人能从逻辑上详细解释我吗?虽然除了特定的测试用例之外,这是不可能精确回答的,但是一个一般的答案可能会有所帮助。CSS是一种非常受限的(尽管表达能力越来越强,最近的CSS版本也越来越多)表达式语言,它允许对CSS选择器的评估进行轻松优化。另一方面,XPath是一种通用而复杂的表达式语言,它比CSS允许更多的选择,因此更难优化。因此,虽然在理论上,对于等效的X

使用SeleniumWebDriver,在HTML中查找元素时,为什么认为XPath比CSS选择器慢?我通常使用XPath和动态XPath


有人能从逻辑上详细解释我吗?

虽然除了特定的测试用例之外,这是不可能精确回答的,但是一个一般的答案可能会有所帮助。CSS是一种非常受限的(尽管表达能力越来越强,最近的CSS版本也越来越多)表达式语言,它允许对CSS选择器的评估进行轻松优化。另一方面,XPath是一种通用而复杂的表达式语言,它比CSS允许更多的选择,因此更难优化。因此,虽然在理论上,对于等效的XPath/CSS表达式,一个完美优化的XPath引擎应该能够实现与CSS引擎相同的性能,但在实践中,在许多情况下,XPath优化将是超级优化的,因此CSS将更快。

考虑它们,因为(通常)它们更慢。尤其是在旧版本的Internet Explorer中,这一点是正确的,但现在这种差异已不再那么重要。有时XPath速度相当快。参见(Chrome 32-2014),(Firefox 26-2014),(IE 10-2012),(IE 9-2011),(IE 8-2009)。