Захватить элементы, значение пользовательского атрибута которых содержит строку - xpath selenium - PullRequest
0 голосов
/ 07 марта 2019

В некоторых приложениях есть div с пользовательским атрибутом tip:

<div tip="<b>Kobold łucznik</b>" style="left: 450px; top: 220px;">...</div>
<div tip="<b>Kobold łucznik</b>" style="left: 320px; top: 320px;">...</div>

Я использую веб-драйвер nodeJs selenium для извлечения некоторых данных из этого приложения.Я нашел информацию, что я могу использовать xpath, чтобы получить элементы, атрибут которых чему-то равен.

Чего я хочу добиться, так это найти все элементы, значение настраиваемого атрибута tip которых содержит строку: 'Kobold łucznik'.Я хочу сделать это, чтобы иметь возможность собирать x и y из left: x px и top: y px и затем передавать их в некоторый массив объектов.

Но первый шаг - найти все эти элементы.

Я пытался так:

driver.findElements(webdriver.By.xpath('//@*[contains('Kobold łucznik','tip')]/..'))

Но без удачи.


Как сказал @ zx485 в разделе комментариев, проблема заключается в том, что tip значение атрибута содержит <.К сожалению, я не могу изменить значение tip.Ключом к тому, чтобы мое приложение работало правильно, является получение этих элементов, и я не могу выполнить свою работу без этого.

1 Ответ

1 голос
/ 07 марта 2019

Я думаю, что это должно работать

driver.findElements(By.xpath("//div[contains(@tip,'Kobold łucznik')]")

или использовать селектор CSS, который быстро и совместим с большим количеством браузеров

driver.findElements(By.css("div[tip*='Kobold łucznik']"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...