python - Selenium for Python : Get text() of node that is shared with another element, 通过 XPath

标签 python python-2.7 selenium xpath

关于这个 page 我希望用于 Python 的 Selenium 获取“投资目标”的文本内容,不包括 <h3> header 。我想使用 XPath。

节点看起来像这样:

<div class="carousel-content column fund-objective">
    <h3 class="carousel-header">INVESTMENT OBJECTIVE</h3>
    The Fund seeks to track the performance of an index composed of 25 of the largest Dutch companies listed on NYSE Euronext Amsterdam.
</div>

要检索文本,我正在使用:

string = driver.find_element_by_xpath(xpath).text

如果我将此 XPath 用于顶级节点:

xpath = '//div[@class="carousel-content column fund-objective"]'

它会工作,但它包含 <h3>标题 INVESTMENT OBJECTIVE — 我想排除。


但是,如果我尝试使用 /text()为了解决实际的文本内容,Selenium for Python 似乎不允许我在使用 .text 时捕获它获取属性:

xpath = '//div[@class="carousel-content column fund-objective"]/text()'

请注意,在这个特定页面上似乎有多个节点具有此 XPath,因此我指定正确的节点如下:

xpath = '(//div[@class="carousel-content column fund-objective"]/text())[2]'

我对问题的解释是 .text不允许我检索 XPath 子节点的文本内容 text() .对于不正确的术语,我深表歉意。

最佳答案

/text() 将找到 return text node, which is not an element node .它没有 text 属性。

一种解决方案是定位这两个元素并删除不需要的文本

xpath = '//div[@class="carousel-content column fund-objective"]'
element = driver.find_element_by_xpath(xpath)
all_text = element .text
title_text = element.find_element_by_xpath('./*[@class="carousel-header"]').text

all_text.replace(title_text, '')

关于python - Selenium for Python : Get text() of node that is shared with another element, 通过 XPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49364186/

相关文章:

python - FBProphet 在增长 ='logistic' python 时给出错误

python - 将字典打印到表格中

python - 使用 Selenium 创建和执行 Javascript 函数

java - 使用先前使用 Selenium 2 选择器选择的 Jquery 选择元素

python - 删除相邻数字的困境

python - 按顺序对列表中的元素进行分组

mysql - 使用注释 django

python - 是否存在用于在 Excel、CSV 和 SQL 之间打乱数据的现有库?

python - 对 pandas 日期时间索引进行排序

selenium - 如何在Selenium Webdriver(Python)中使用变量名存储包含特定文本的元素来存储字符串?