使用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']
答案 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具有更好的性能