python - selenium 通过 xpath 查找元素出现错误,其中 lxml 中的相同表达式可以

标签 python selenium xpath selenium-webdriver lxml

我在各种 xpath 表达式中都遇到过这个问题。 selenium 的 find_element_by_xpath() 方法失败,而同一表达式的 lxml 给出了预期值。例如:

>>> lxml.html.fromstring(br.page_source).xpath('//a[@title="2"]/text()')
... ['\n\t\t\t\t\t\t2\n\t\t\t\t\t', '\n\t\t\t\t\t\t2\n\t\t\t\t\t']

>>> br.find_element_by_xpath('//a[@title="2"]/text()')
... InvalidSelectorException: Message: {"errorMessage":"The result of the xpath expression \"//a[@title=\"2\"]/text()\" is: [object Text]. It should be an element.","request":{"headers":{"Accept":"application/json","Accept-Encoding":"identity","Connection":"close","Content-Length":"108","Content-Type":"application/json;charset=UTF-8","Host":"127.0.0.1:47455","User-Agent":"Python-urllib/2.7"},"httpVersion":"1.1","method":"POST","post":"{\"using\": \"xpath\", \"sessionId\": \"85546b60-7c8e-11e4-b2ba-2bb5fbee7719\", \"value\": \"//a[@title=\\\"2\\\"]/text()\"}","url":"/element","urlParsed":{"anchor":"","query":"","file":"element","directory":"/","path":"/element","relative":"/element","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/element","queryKey":{},"chunks":["element"]},"urlOriginal":"/session/85546b60-7c8e-11e4-b2ba-2bb5fbee7719/element"}}
Screenshot: available via screen

为什么会发生这种情况以及如何纠正它?

最佳答案

正如错误消息所述 - find_element_by_xpath() 内部使用的 xpath 必须指向一个元素。在您的情况下,它指向一个文本节点

如果要获取元素的文本,先找到元素,然后获取.text:

element = driver.find_element_by_xpath('//a[@title="2"]')
print element.text

关于python - selenium 通过 xpath 查找元素出现错误,其中 lxml 中的相同表达式可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27318917/

相关文章:

python - 修改元组上的列表。我收到类型错误,但元组值已更改

python - Windows 目录名称无效

python - Selenium:等到 WebElement 中的文本发生变化

C# Selenium : Click button under iframe

javascript - 在给出 HTML 和 Xpath 时突出显示

python - 使用涉及列表中某些文件的过程进行循环?

java - 如何处理 selenium webdriver 中 ID 为空的弹出窗口?

xml - 分配/绑定(bind) for 子句的结果?

java - 为什么 Java 向我的 XPath 添加反斜杠?

python - 使用交叉验证评估逻辑回归