Веб-драйвер Python / Selenium. Найти элемент на странице и распечатать / вернуть его xpath - PullRequest
1 голос
/ 18 октября 2019

У меня есть скрипт, который ищет текстовую строку на веб-странице

el = driver.find_elements_by_xpath("//*[contains(text(), 'Sample_Text')]")

Он возвращает то, что я ожидал при печати результата.

print (el[-1].text)

for x in el:
  print (x.xpath)
  print('found sample text:\n',x.text)

Возможно ли эточтобы добавить строку, которая будет печатать / возвращать xpath webelement ?, мне нужно получить xpath для el [-1] или x в цикле For. Очевидно, x.xpath выдаёт мне ошибку:

AttributeError: 'WebElement' object has no attribute 'xpath'

Я знаю, как получить xpath при проверке кода. Но я бы хотел, чтобы сценарий получил его для меня. За webelement, который соответствует текстовой строке.

спасибо,

1 Ответ

1 голос
/ 18 октября 2019

Не существует ранее существовавшего метода для извлечения строки xpath из элемента. Однако можно построить один. Вот пример использования lxml,

import lxml
from lxml import html

# get the page source from the driver.
tree = html.fromstring(driver.page_source)
el = tree.xpath("//*[contains(text(), 'Sample_Text')]")

# This should print the direct xpath to the element.
myElementXpath = el.getroottree().getpath(el)
print(myElementXpath )

Теперь вы можете использовать этот xpath в драйвере для выполнения действий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...