找不到元素-xPath正确

时间:2019-07-04 10:30:03

标签: python selenium

因此,我有一个XPath(我已经验证了此功能,并通过Google Chrome浏览器工具拥有1个唯一值。

我尝试了各种方法来尝试获取此xpath,最初在chrome中使用right click > copy xpath给了我:

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

但是,此ID在每次重新加载时都会更改。

所以,我最终将其归结为:

//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 个答案:

答案 0 :(得分:1)

检查此:

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

如果您不会获得很多元素,则可以完成以下操作:

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

答案 1 :(得分:0)

您不应将/ text()用于WebElement。使用“ // th [@ name ='name'] / span / a”作为Xpath并使用element.text打印文本(不确定Python的确切方法,但在Java中是element.getText())

答案 2 :(得分:0)

我建议使用绝对XPath而不是相对XPath,如果id随每次加载而变化,它可能会解决它。请在下面使用Google搜索栏查看绝对XPath与相对XPath有何不同。

  • 相对XPath-// * [@@ =“ =” 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

正如您所说,我理解您不能共享链接,但是如果您可以共享显示DOM的检查元素快照,那么这里的人可以为您提供帮助。因此,如果XPath中存在问题,则可以将其纠正。谢谢:-)

相关问题