В Tritium, чем отличаются селекторы CSS и XPath?
Каковы преимущества / недостатки двух разных селекторов?
Должен ли я использовать один над другим?
2 ответа
Решение
Я думаю, что это в первую очередь вопрос пользовательских предпочтений.
Выбрать первого ребенка из всех <p>
элементы, вы бы сделали:
$("//p/*[1]")
в Xpath$$("p > *:first-child")
в CSS
Я предпочитаю использовать Xpath, но YMMV.
Обратите внимание, что внутри все селекторы CSS преобразуются в Xpath. Например, селектор $$("#one")
будет преобразован в $(".//*[id='one']")
,
Всего несколько заметок:
- индексирование начинается с 1 в XPath, поэтому
//p/*[1]
- Селекторы CSS в Tritium позволяют использовать префикс селектора с
>
, как в$$("> p > :first-child")
; это будет преобразовано в поиск по области (т. е../p/*[1]
) - Поскольку селекторы CSS (в настоящее время) динамически преобразуются в XPath, это незначительное снижение производительности по сравнению с использованием простого XPath.