Про xpath- и css-локаторы можно почитать на страничке :
https://seleniumhq.org/docs/appendix_locating_techniques.html#starting-to-use-css-instead-of-xpath
Коротко говоря xpath- и css-локаторы — это два различных типов локаторов для идентификации объектов на веб-странице.
css-локаторы идентифицируют элементы быстрее, но xpath-локаторы надежнее, поэтому во всех автотестах было решено использовать xpath-локаторы.
Для правильного определения и написания xpath локаторов нам поможет firebug (https://firebug.ru/) и плагин для него FireFinder (https://addons.mozilla.org/en-US/firefox/addon/firefinder-for-firebug/)
Устанавливаем firebug и FireFinder.
Заходим на страницу mamba.ru Нажимаем правой кнопкой мыши по ссылке «Вход» — «Аанализировать элемент» Копируем ссылку и получаем следующее:
В Xpath это будет выглядеть так //a[contains(@class, ‘o-auth’)] ( тег, класс и название класса). (Примечание: можно использовать class, а любой параметр для тега. Например, //a[contains(@href, ‘/?tip=Login’) — нахождение ссылки по уникальному содержимому в ней)
Для CCS-локатора это будет выглядеть как «a.o-auth». Использовать следует следующим образом driver.findElement(By.cssSelector(«a.o-auth»);
Далее в firebug заходим на вкладку Firefinder в поле вставляем наш xpath: //a[contains(@class, ‘o-auth’)] нажимаем «Filter» и получаем следующую ссылку:
Отсюда вывод, что наш xpath верен.
В заключении надо сказать о частных локаторах: id и name. Они являются уникальными для элемента, поэтому поиск по ним происходит значительно быстрее. К сожалению, они есть далеко не всегда.
Формат команды driver.findElement(By.id(«id»)); и driver.findElement (By.name(«name»));
Например, driver.findElement(By.name(«submit_login»)); для кнопки «Войти» на лаере авторизации.
driver.findElement(By.id(«auth:email»)); для поля ввода e-mail на лаере авторизации.
В дальнейшем я еще буду писать подробные статьи о работе с xpath и css