请帮助我理解为什么使用CSS选择器甚至可以进行自动化测试。我在工作场所中一直使用Ghost Inspector工具为我们的东西创建许多自动化测试。该工具使您可以选择使用XPath的CSS选择器。为什么?
XPath比CSS更耐用。在某些项目/功能上,任何给定UI上的CSS几乎每周都会更改。这会使测试非常脆弱,并且容易被定期破坏。
是因为大多数新的测试作者都不希望学习XPath的任何知识,而是希望坚持使用基础知识吗? CSS选择器看起来比XPath语法漂亮吗?请说服我。谢谢。
答案 0 :(得分:7)
JeffC's answer here可以很好地总结每种定位器策略的利弊。但是,我将具体说明您的观点。
首先,不需要任何人说服选择器更好,因为从纯粹的功能角度来看,选择器根本不是(而且我说的是带有金色css-selectors标签的人)徽章和带有该标签的问题的近1000个答案,因此您知道我没有偏见)。如果您对XPath更满意,请使用它-就功能和您可以做的事情而言,XPath非常优越,那里确实没有竞争。而且,正如您正确指出的那样,性能不再是问题(如果有的话)。
选择器用于快速简单的用例,以及来自HTML和CSS代码库的用户(例如Web开发人员),他们希望开始自动测试而不必学习其他DSL。如果您负责自己网站的CSS,则还可以根据要测试的内容轻松地将选择器从样式表复制到测试中。
如果另一方面,您来自XML / XSLT / XPath背景,那太好了,您可以继续使用自己熟悉并喜欢的XPath 1 !
是的,Xpath比CSS更耐用,因为它可以调用包含功能的特定内容。
拥有内容包含功能并不能使XPath更“耐用”,而是使它更具通用性。如果您仅依赖元素的内容,并且该内容可能会发生更改或移动,那么XPath的脆化程度将不亚于仅依赖元素的属性或其在DOM树中位置的选择器。
您可以做很多事情来使您的XPath或选择器或多或少地变脆,但这表明DSL的用途广泛,而不是它固有的脆性。 >
1 取决于您习惯的XPath版本。
答案 1 :(得分:4)
在 Selenium社区中,最常见的对话之一是Locator Strategy在两者之间比较好- Css 或 XPath 关于性能。 CSS 的支持者说它更具可读性和更快性,而支持 XPath 的人则说它具有穿越 HTML DOM 的能力(而CSS不能)。基于不同观点的这种划分,很难为您和初学者确定性能最佳的方法。这是来自行业专家的一些专家:
具有按ID和类别查找元素的结果:
Browser | CSS | XPath
----------------------------------------------------
Internet Explorer 8 | 23 seconds | 22 seconds
Chrome 31 | 17 seconds | 16 seconds
Firefox 26 | 22 seconds | 22 seconds
Opera 12 | 17 seconds | 20 seconds
Safari 5 | 18 seconds | 18 seconds
通过遍历查找元素:
Browser | CSS | XPath
----------------------------------------------------
Internet Explorer 8 | not supported | 29 seconds
Chrome 31 | 24 seconds | 26 seconds
Firefox 26 | 27 seconds | 27 seconds
Opera 12 | 25 seconds | 25 seconds
Safari 5 | 23 seconds | 22 seconds
以下是要点:
赞成CSS的一个论点是,它们是主观的,它们更具可读性,简洁性和简洁性。
Ben Burton提到您应该使用CSS,因为这是构建应用程序的方式。这使测试更易于编写,讨论和让其他人维护。
Adam Goucher表示采用一种更加混合的方法-首先关注ID,然后关注CSS,仅在需要时才使用XPath(例如,沿DOM走),并且XPath永远会更多对于高级定位器而言功能强大。
因此,拨打电话似乎很难。尤其是现在,我们已经知道,选择不再像以前那样依赖性能。选择并不像选择编程语言那样永久,并且如果您使用有用的抽象(例如页面对象),那么利用混合方法就很容易实现。