使用Selenium的css选择器语法有什么好处

时间:2017-11-15 08:01:43

标签: c# selenium css-selectors

使用css选择器查​​找元素时,可以用多种方式编写它们。例如:

driver.FindElement(By.CssSelector("header.top-bar.js-top-bar._fixed"));

VS

driver.FindElement(By.CssSelector("header[class='top-bar js-top-bar _fixed']"));

driver.FindElement(By.CssSelector("form[id='search'][action='/search']"));

VS

driver.FindElement(By.CssSelector("form#search[action='/search']"));

对我而言,这仅仅是个人偏好使用一个而不是另一个,但我想知道在使用中是否有任何性能优势,例如:

header.top-bar.js-top-bar._fixed vs header[class='top-bar js-top-bar _fixed']

1 个答案:

答案 0 :(得分:1)

您可以使用" CSS Test Creator"它可以让你测试不同CSS选择器的速度:

http://stevesouders.com/efws/css-selectors/csscreate.php

我使用10,000个规则和10,000个锚来测试tag.class和tag [class =' class']。运行每次测试5次,我得到以下结果:

+----------+-----------+----------+
|  Test #  | tag.class|tag[class|
+----------+-----------+----------+
|    1     |  226 ms  |  177 ms |
|    2     |  197 ms  |  211 ms |
|    3     |  228 ms  |  177 ms |
|    4     |  207 ms  |  200 ms |
|    5     |  209 ms  |  198 ms |
+----------+-----------+----------+
|  AVERAGE |  213 ms  |  192 ms |
+----------+-----------+----------+

基于上述推论,可以肯定地说标签[class =' class']比tag.class具有更好的性能