因此,我有一个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()"}
答案 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有何不同。
正如您所说,我理解您不能共享链接,但是如果您可以共享显示DOM的检查元素快照,那么这里的人可以为您提供帮助。因此,如果XPath中存在问题,则可以将其纠正。谢谢:-)