Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

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

locators
robot-framework
css-selectors
testng
Теги: #<Tag:0x00007f7b6122b1c0> #<Tag:0x00007f7b6d5fb550> #<Tag:0x00007f7b6d5fae48> #<Tag:0x00007f7b6d5fa588>

(Necrosium) #1

Всем привет.
В роботе использую 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 для использования их в качестве локатора элемента?


(Vasiliy Rakshin) #2

Первая таблица http://bit.ly/gTd5oc должна помочь.
http://www.qavalidation.com/2015/05/xpath-css-patterns.html
Да, тот css что вы привели и есть полный css, но для более удобной работы нам его лучше укоротить, т.к. он избыточен. Как? - учить правила написания, что по ссылке я дал, проверять свои локаторы в FirePath (плагин такой для фаербага). Не понимаю как вы тогда xpath писали, тут такие же примерно правила и возможности.


(Yaroslav Pernerovskyy) #3

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


(Necrosium) #4

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

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


(aino) #5

:scream:


(Dmitriy Zverev) #6

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


(Yury) #7

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

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

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


(Necrosium) #8

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


(Yaroslav Pernerovskyy) #9

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

Абсолютный путь, например “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]” и все… ваши тесты сломались.А чинить локаторы, после каждого чекина со стороны юайщиков… ну ппц же.