python - 使用selenium python仅在html中的特定文本之后查找元素

标签 python selenium selenium-webdriver

假设我有以下 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 和类可以在任何级别。

最佳答案

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

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

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

更新

如果需要,将 following-sibling 替换为 following div 节点不是兄弟节点:

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

关于python - 使用selenium python仅在html中的特定文本之后查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50658428/

相关文章:

python - Tweepy 公共(public)流过滤器通过变化的变量

java - 无法使用简单的java代码进行selenium浏览器自动化的下一个注释

javascript - PhantomJS 和 Selenium Webdriver - 如何抓取由 js 加载的下一页表

python - 在 Pandas read_csv 期间标记化数据时出错。如何真正看到坏线?

python - Python 中 base64 编码/解码的额外新行?

javascript selenium webdriver 不是全尺寸

java - 为什么我在 Selenium 中的同一个 WebElement 上得到不同的结果?

python - 属性错误 : 'module' object has no attribute 'webdriver'

angularjs - 如何使用 Angular 的 Protractor 0.24 版本在 <select> 列表中选择一个值?

python - 如何为按不同大小分组的元素列表生成所有可能的组合?