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

Поиск элемента на странице по тексту элемента стандартными кейвордами Selenium2Library (решено)


(Виктор) #1

На стрнаице есть список <UL>, в нём внутри в <Li> в нескольких вложенных элементах лежат названия пунктов списка. Мне нужно кликнуть на ссылку внутри того <Li>, где есть нужное мне название пункта.
Сейчас я делаю так: в цикле строю локатор для названия списка в виде “xpath=//*[@id=“list”]/li[${index}]/a/h3”, и сравниваю текст элемента по этому локатору с нужным мне названием. Если такого элемента нет или название не совпадает, то кейворд фейлится. Я это отслеживаю и перехожу к следующей итерации цикла. Если же имя совпадает, то я строю другой локатор для ссылки, и нажимаю на эту ссылку.
Получается если мне надо 10-й элемент, то сейчас я получу 9 раз файл, и на десятый найду нужную мне строку списка и смогу кликнуть на ссылку в ней.

Подскажите пожалуйста, есть ли какие-то более подходящие способы найти элемент по тексту на странице, используя Selenium2Library или другие стандартные библиотеки Robot Framework? Или нет возможнсоти сделать это кейвордом и надо искать в коде страницы javascript-ом? Есть ли какие-то альтернативы?


(vmaximv) #2

Зачем итерации - почему нельзя искать нужный элемент напрямую через xpath?


(Виктор) #3

Вот допустим у меня есть 3 элемента с такими Xpath
xpath=//[@id=“list”]/li[1]/a/h3
xpath=//
[@id=“list”]/li[2]/a/h3
xpath=//*[@id=“list”]/li[3]/a/h3
Как мне узнать в который из них “нужный”, в каком элементе текст h3 равен строке “MyRequredTextValue”?


(vmaximv) #4

Почитайте про функции text() и string() в xpath


(Виктор) #5

Спасибо, с text() работает. Надо будет действительно почитать про этот ваш xpath :slight_smile:


(rpwheeler) #6

Думаю, прочтение этой статьи может сильно помочь :wink:


(Mykhailo Poliarush) #7