Найти рассчитанное имя арии с помощью Selenium - PullRequest
0 голосов
/ 28 сентября 2019

Я думаю, что мой первый пример был неудачным, следуя всестороннему примеру.

Цель: Я хочу выбрать третий элемент "li", основываясь на моих знаниях, которые переводит labelledbyв "тест 3".Как я могу это сделать?

<html>
<body>

<div id="a">test 1</div>
<div id="b">test 2</div>
<div id="c">test 3</div>

<ul>
<li aria-labelledby="a">x</li>
<li aria-labelledby="b">y</li>
<li aria-labelledby="c">z</li>
</ul>

</body>
</html>

Следующее не работает (не находит элемент с таким именем)

element = browser.find_element_by_xpath("//li[@aria-label='test 3']")

Кроме того, следующее не работает, потому что у меня нет знаний о 'c' (это динамическая часть)

element = browser.find_element_by_xpath("//li[@aria-labelledby='c']")

1 Ответ

0 голосов
/ 28 сентября 2019

В вашем источнике HTML я вижу атрибут aria-labelledby, но в вашем XPath вы используете aria-label.Вы должны убедиться, что ваш XPath выполняет поиск на основе HTML.Я также вижу пробелы в вашем aria-label, так что это может быть проблемой.

Возможно, вам нужно сделать contains вместо =

driver.find_element_by_xpath(“//tr[contains(@aria-label, ‘Test’)]”)

Или, в зависимости от вашего HTML, использовать атрибут aria-labelledby.

driver.find_element_by_xpath(“//tr[contains(@aria-labelledby, ‘Test’)]”)

Наконец - если атрибуты aria-label и aria-labelledby постоянно меняются, вы можете попытаться найти их по самому тексту.

element = browser.find_element_by_xpath("//li[contains(text(), 'test 3']")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...