Не удается найти элемент - правильный xPath - PullRequest
0 голосов
/ 04 июля 2019

Итак, у меня есть XPath (я проверил, что это работает, и у меня есть 1 уникальное значение с помощью Google Chrome Tools.

Я пробовал различные методы, чтобы попытаться получить этот xpath, изначально используя right click > copy xpathв Chrome дал мне:

//*[@id="hdr_f0f7cdb71b9a3f44782b87386e4bcb3e"]/th[2]/span/a

Однако этот идентификатор меняется при каждой перезагрузке.

Итак, я в итоге получил его до:

//th[@name="name"]/span/a/text()

element = driver.find_element_by_xpath("//th[@name='name']/span/a/text()")
print(element)


selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//th[@name='name']/span/a/text()"}

Ответы [ 3 ]

1 голос
/ 04 июля 2019

отметьте это:

len(driver.find_elements_by_xpath('//*[contains(@id, "hdr_")]'))

, если вы не получите много элементов, которые вы сделали с этим:

driver.find_elements_by_xpath('//*[contains(@id, "hdr_")]')
0 голосов
/ 04 июля 2019

Я предлагаю использовать абсолютный XPath, а не относительный XPath, он может разрешить его, если идентификатор меняется с каждой загрузкой.см. ниже, как абсолютный XPath отличается от относительного с помощью панели поиска Google.

  • Относительный XPath - // * [@ id = "tsf"] / div [2] / div / div [1] / div / div [1] / input
  • абсолютный XPath - / html / body / div / div [3] / form / div [2] / div / div [1] / div / div [1] / input

Я понимаю, что вы сказали, что не можете поделиться ссылкой, но люди здесь могут помочь, если вы можете поделиться снимком inspect element, показывающим DOM.так что, если есть проблема в XPath, ее можно исправить.Спасибо: -)

0 голосов
/ 04 июля 2019

Вы не должны использовать / text () для WebElement. Используйте "// th [@ name = 'name'] / span / a" в качестве Xpath и напечатайте текст, используя element.text (Не уверен насчет точного метода для Python, но в Java это element.getText ())

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