下面是我的 selenium 代码。
sourcesearch = driver.find_element_by_xpath('//*[@id=\"Table_Exame\"]/tbody/tr[1]/td/text()[1]')
结果是-
selenium 元素。常见。异常。无效选择器异常:消息:无效的选择器:xpath表达式"//* [@id ="Table_Exame" ]/tbody/tr [1 ]/td/text()[1]"的结果为:[object Text],应为元素。
有什么方法可以让我通过Selenium检索[对象文本]吗?任何帮助都将不胜感激。
由于网站没有为文本添加任何标签,因此除Xpath之外的任何内容都不可用。另外,由于它只是一个仅限会员的网站,因此无法包含网站地址。
3条答案
按热度按时间iklwldmw1#
我也遇到过类似的问题,在搜索时发现了这个问题。
对我来说,从
到
解决了我的问题。
我还发现需要仔细检查正确的DOM元素。YMMV。
tvokkenx2#
由于XPath表达式以
text()[whatever]
结尾,因此它解析为文本容器,而不是HTML元素(或列表)。提示:浏览页面时,在Firefox控制台中使用
$x(some_xpath_expression)
尝试XPath表达式。也许您应该编辑您的问题,添加周围的HTML摘录,并准确描述您所期望的内容。
xe55xuns3#
这可以通过JavaScript中的
document.evaluate()
方法来解决。纯JavaScript:
var element = document.evaluate("//*[local-name() = 'text'][@x='8']/text()", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;if (element) {return element.nodeValue;}
下面是一个Java的例子(我害怕在Python中给出这个例子,因为我可能会在不执行的情况下犯错误,而且代码来自Java中的工作项目):
如果您不关心元素没有文本的情况,那么可以省略if语句
"if (element) {return element.nodeValue;}"
。在这种情况下,您可能需要将该行替换为"return element.nodeValue;"