首页 > 解决方案 > Selenium 元素中没有肯定包含文本的文本

问题描述

所以,我有一个 Selenium 网络驱动程序正在运行。我想从某些节点中提取文本。我可以找到它们:

In [73]: nodes = driver.find_elements_by_css_selector("rect > title")
In [74]: len(nodes)
Out[74]: 63

但它们不包含任何文本:

In [75]: for n in nodes:
    ...:     if n.text:
    ...:         print(n.text)
<prints nothing>

但是,如果我在连接到此驱动程序实例的浏览器中打开 devtools,我会发现与此 CSS 选择器相同数量的节点 - 它们肯定包含一些文本: 开发工具

所以,我有一些带有 Selenium 无法检索的文本的节点。只是为了确保,我从该页面的源创建了一个 BeautifulSoap - 我能够以这种方式找到有问题的元素并获取它们的文本。

In [86]: [a.text for a in s.select("rect > title")]
Out[86]: 
['Sometext',
 'Sometext',
 'Sometext',
 'Sometext',
 ...]

取而代之的是“innerText”,就像在这个问题中一样,没有帮助。那是某种硒错误,还是我做错了什么?以防万一,问题的html。

标签: pythonselenium

解决方案


尝试使用

n.getAttribute("textContent")

“标题”标签可能会被特殊处理,因为“它没有被渲染”: https ://www.w3.org/TR/webdriver/#get-element-text


推荐阅读