一尘不染

为什么我应该使用CSS选择器而不是XPath进行自动化测试?

selenium

请帮助我理解为什么使用CSS选择器甚至可以进行自动化测试。我在工作场所中一直使用Ghost
Inspector工具为我们的东西创建许多自动化测试。该工具使您可以选择在XPath中使用CSS选择器。为什么?

XPath比CSS更耐用。在某些项目/功能上,任何给定UI上的CSS几乎都会每周更改。这会使测试变得非常脆弱,并且容易被定期破坏。

是否因为大多数新的测试编写者都不想学习任何XPath并希望坚持使用基础知识?CSS选择器看起来比XPath语法漂亮吗?请说服我。谢谢。


阅读 701

收藏
2020-06-26

共1个答案

一尘不染

JeffC在这里的答案足以总结每种定位器策略的利弊。但是,我将具体说明您的观点。

首先,不需要任何人说服选择器更好,因为从纯粹的功能角度来看,选择器根本没有(我是说这是一个带有金色的css-
selectors
标签徽章和几乎1000个答案的人询问带有该标签的问题,因此您知道我没有偏见)。如果您对XPath更满意,请使用它-
就功能和您可以做的事情而言,XPath 优越 得多 ,确实没有任何竞争。而且,正如您正确指出的那样,性能不再是问题(如果有的话)。

选择器适用于快速简单的用例,以及来自HTML和CSS代码库的用户(例如Web开发人员),他们希望入门自动测试而无需学习其他DSL。如果您负责自己网站的CSS,则还可以根据要测试的内容轻松地将选择器从样式表复制到测试中。

另一方面,如果您来自XML / XSLT / XPath背景,那太好了,您可以继续使用您熟悉和喜欢的XPath 1!

是的,Xpath比CSS更耐用,因为它可以调用包含特定内容的功能。

具有内容包含功能并不能使XPath更“耐用”,而是使它更具通用性。如果您仅依赖元素的内容,并且该内容可能会发生更改或移动,那么XPath的脆化程度将不亚于仅依赖元素的属性或其在DOM树中的位置的选择器。

您可以做很多事情来使您的XPath或选择器或多或少地变脆,但这表明DSL的用途广泛,而不是其 固有的 脆弱性。


1 根据您习惯的XPath版本。

2020-06-26