Как преобразовать запросы XPath в CSS селекторы?


(Luisa S) #1

Добрый день! Я обычно использую в качестве локаторов Xpath, но в одном из тестов можно применить только CSS. Как можно преобразовать следующие запросы:

(".//*[@id='days-container']//*[@id='839c06e1-5508-4839-9a70-63b4594a144d']")
(".//*[@id='839c06e1-5508-4839-9a70-63b4594a144d']")

(Volodymyr) #2

Ну я скорее всего не понял вопрос. id - уникальный и может быть толкьо один на страничке, по этому попробуйте как-то так ("#839c06e1-5508-4839-9a70-63b4594a144d") и в первом и вовтором случаи должно работать
я всегда проверяю через мозилку адон Xpath, только я не беру адоном локатор а пишу самописный локатор туда, как бы проверяю или я правильно написал


(Александр Таранков) #3

Чтобы получить ответ на такой вопрос, необходимо наверное приложить кусок исходного кода страницы? Или не обязательно?


(Luisa S) #4

Исходный код приложить не могу.

Я проверяю локаторы через Firepath, и при поиске следующих CSS selectors ничего не находит на странице:

#839c06e1-5508-4839-9a70-63b4594a144d
#days-container',#839c06e1-5508-4839-9a70-63b4594a144d

(Александр Таранков) #5

Для ответа на вопрос ты предоставляешь слишком мало информации


(sidelnikovmike) #6

Есть подозрение, что id динамические. Попробуйте по какому нибудь аттрибуту искать


(Pnevmoslon) #7
  1. Почему можно применить только CSS?
  2. Поскольку это id, можно делать либо поиск по id, либо по css #. В данном случае локатор #839c06e1-5508-4839-9a70-63b4594a144d будет правильным.
  3. работает ли локатор в тесте? Может просто глюк Firepath или забыла сменить алгоритм поиска? :slight_smile: Слева от поля, в которое нужно вводить локатор, есть менюшка с выбором

(Luisa S) #8
  1. Я пытаюсь выполнить d’n’d 'этим способом: http://elementalselenium.com/tips/39-drag-and-drop
    JQuery использует CSS-подобный синтаксис. Xpath не работает в этом случае.

2,3. CSS и в тесте не работает. И даже в firepath если на строке с этим элементом выбрать “set CSS”, в строку вставляется #839c06e1-5508-4839-9a70-63b4594a144d, но элемент не находит


(Pnevmoslon) #9

Т.е. вы хотите сказать что в рамках одной сессии есть элемент, который Firepath находит по xpath, но не может найти по css? Если так, то предположу, что это глюк Firepath’а, а проблема ваша связана с другим.
Во-первых, я бы посоветовал не привязываться к элементу с таким id. Уж больно рандомным он выглядит. Лучше, как уже рекомендовали, действительно поискать по какому-нибудь аттрибуту.
Во-вторых, может быть вы и во все пытаетесь перетаскивать то, что не перетаскивается. Очень сложно гадать по таким локаторам :smile:
Ну и наконец, при чём тут вообще jQuery? Чем не угодили стандартные средства selenium?


(Invy) #10

Додам, що найстабiльнiше, як на мене, перевiряе XPath стандартна утилiта хрома та фаерфокса. В закладцi Console вводиться команда з тим жеж XPathом. Наприклад: $x("//*[id='']")
Треба тiльки пам’ятати про замi всiх " в своему XPathi на одинарнi ’
Щодо даноï конкретноï idшки, то вона явно динамiчна. Спробуйте знайти один унiкальний атрибут елемента або або його текст.
Щодо того що css selector працюе по iншому - факт, сама колись напороласть на таку рiч.
I ще, одне якщо ви виставите один чи кiлька вузлiв вашоï htmlки в паблiк, це ще не порушення комерцiйноï таемницii. =)


(Алеся) #11

потому что css в firepath не нравятся “-” дефисы, так не достучитесь до них