首页 > 解决方案 > 仅在使用 selenium python 的 html 中的特定文本之后查找元素

问题描述

假设我有以下 HTML 代码

<div class="12"> 
  <div class="something"></div> 
</div>
<div class="12"> 
  <div class="34"> 
    <span>TODAY</span> 
  </div>
</div> 
<div class="12"> 
  <div class="something"></div> 
</div> 
<div class="12"> 
  <div class="something"></div> 
</div>

现在,如果我使用driver.find_elements_by_class_name("something"),那么我将获得 HTML 代码中存在的所有类。但我只想在 HTML 中的特定单词(“今天”)之后获取课程。如何排除出现在特定单词之前的类。下一个 div 和类可以在任何级别。

标签: pythonseleniumselenium-webdriver

解决方案


您可以使用 XPath 搜索,如下所示:

driver.find_elements_by_xpath('//*/text()[.="some specific word"]/following-sibling::div[@class="something"]')

请注意,如果您的真实HTML 与提供的简化HTML不同,您可能需要进行一些修改

更新

如果需要的节点不是兄弟节点,则替换following-sibling为:followingdiv

driver.find_elements_by_xpath('//*/text()[.="some specific word"]/following::div[@class="something"]')

推荐阅读