как и откуда брать CSS & DOM локаторы элементов?

Всем привет.
В роботе использую xpath в качестве локаторов, но хочется узнать как использовать и откуда доставать другие локаторы.
Dom - если честно, вообще непонятно что указывать. Если в фаербаге открыть вкладку дом, там будет целое полотно различных параметров…
CSS - тут тоже не все гладко. Если скопировать css path для какого-то элемента из фаербага, то получаю строку по типу:
html body.base.user section.wrapper div#tabs.ui-tabs.ui-widget.ui-widget-content.ui-corner-all div#customers.signed.ui-tabs-panel.ui-widget-content.ui-corner-bottom section.edit.hidden-view div.bootstrap-table div.fixed-table-toolbar div.columns.columns-right.btn-group.pull-right button.btn.btn-default
из этой строки, на сколько я понимаю, необходимо что-то выбрать в качестве локатора, но что именно и по какому принципу выбирать - непонятно.

из селениум2библиотеки:
dom Click Element | dom=document.images[56] Matches with arbitrary DOM express
css Click Element | css=div.my_class Matches by CSS selector

в общем, если кто знает, объясните, пожалуйста, как и откуда брать параметры css и dom для использования их в качестве локатора элемента?

1 лайк

Первая таблица XPath, CSS, DOM and Selenium: The Rosetta Stone - Simple Talk должна помочь.
xpath/CSS patterns to identify browser elements - qavalidation
Да, тот css что вы привели и есть полный css, но для более удобной работы нам его лучше укоротить, т.к. он избыточен. Как? - учить правила написания, что по ссылке я дал, проверять свои локаторы в FirePath (плагин такой для фаербага). Не понимаю как вы тогда xpath писали, тут такие же примерно правила и возможности.

1 лайк

Смотрите сюда

1 лайк

а для чего именно писать xpath? он копируется из фаербага в готовом виде и сразу же может быть использован, а вот с dom и css так не получается, использовать сразу

в любом случае, спасибо за инфу буду, смотреть/читать/разбираться/пробовать :slight_smile:

:scream:

3 лайка

Работа с локаторами в роботе ничем не отличается от других инструментов и необходимую информацию Вам привели ниже. Я же дополню, что, если Вы работаете с firefox, то может оказаться полезным это расширение GitHub - joao-carloto/FireRobot: Firefox extension for Robot Framework/Selenium., позволяющее упростить работу по программированию selenium-тестов

1 лайк

Зайдите на yandex.ru , например. Там будет ссылка “Карты”.

Вот ее абсолютный xpath из фаербага: html/body/div[1]/div[3]/div/div[2]/div/div[2]/div/div[1]/div/a[1]

А можно тоже самое написать так: //a[text() = "Карты"]

2 лайка

я так понимаю, что это что-то вроде minimal xpath?
т.е. любой абсолютный xpath можно преобразовать в более наглядный вариант?
я встречал на некоторых элементах варианты minimal xpath, но не знал, что можно абсолютный преобразовать…

Тут главная суть вовсе не в наглядности, а скорее в надежности.

Абсолютный путь, например “html/body/div[1]/div[3]/div/div[2]/div/div[2]/div/div[1]/div/a[1]” при минимальном изменении верстки, может тупо сломаться, потому что разрабы добавили еще один div или еще одну ссылочку и ваша искомая уже имеет индекс не [1], а [2], или и вовсе находиться по адресу “html/body/div[1]/div[6]/div[3]/div/a[8]” и все… ваши тесты сломались.А чинить локаторы, после каждого чекина со стороны юайщиков… ну ппц же.