css-selector和Xpath有什么区别? 哪个更好(根据性能和跨浏览器testing)?

我正在使用Selenium WebDriver 2.25.0多语言networking应用程序,主要testing页面内容(针对不同的语言,如阿拉伯语,英语,俄语等)。

对于我的应用程序,根据性能更好,并确保它应该支持所有的浏览器(即IE 7,8,9,FF,Chrome等)。

预先感谢您的宝贵build议。

2 Solutions collect form web for “css-selector和Xpath有什么区别? 哪个更好(根据性能和跨浏览器testing)?”

CSSselect器比Xpath执行得更好,在Selenium社区中有很好的logging。 这是一些原因,

  • Xpath引擎在每个浏览器中是不同的,因此使它们不一致
  • IE没有一个本地的xpath引擎,因此selenium注入自己的xpath引擎来兼容其API。 因此,我们失去了使用WebDriver固有推广的本地浏览器function的优势。
  • Xpath往往变得复杂,因此在我看来很难阅读

然而在某些情况下,你需要使用xpath,例如,search一个父元素或者通过文本search元素(我不推荐以后)。

你可以在这里阅读Simon的博客。 他还build议CSS over Xpath。

如果您正在testing内容,则不要使用依赖于元素内容的select器。 这将是每个地区的维护噩梦。 尝试与开发人员交谈,并使用他们用来将应用程序中的文本外化的技术,如字典或资源包等。这里是我的博客 ,详细解释它。

编辑1

感谢@parishodak,这里是提供certificateCSS性能更好的数字的链接

在IE中使用CSS的主要优点(通常在大多数浏览器中)是比xpath快一点。 你可以检查这个链接,以获得更好的图片。

  • 从XML节点java生成/获取xpath
  • Xpath“结束与”不起作用
  • XPath ::获取以下兄弟
  • 有没有XSLT名称的元素?
  • 在Java中将JSON转换为XML
  • XPathselect多个标签
  • XPathselect具有名称空间的节点
  • XPath - node()和text()之间的区别
  • 带默认命名空间的Xml-SelectNodes通过XmlNamespaceManager不能正常工作
  • 使用xpath查找节点的位置
  • XPath:select不*具有特定名称的子元素