You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Selenium中检测<div>内是否存在指定元素?代码else分支未触发

问题分析与解决

你的代码有两个核心问题导致else分支永远无法触发:

  1. find_element会直接抛出异常:当目标<img>不存在时,find_element不会返回None,而是抛出NoSuchElementException,程序直接中断,根本走不到else判断。
  2. XPath路径错误://img是从整个文档根节点开始查找,不是在当前<div>内部查找,会把页面上所有符合条件的<img>都找出来,哪怕不在当前循环的div里,导致判断逻辑完全错误。

修正后的代码

picUrl = []
eachDiv = self.find_elements(By.XPATH, "//div[@class='NiLAwe y6IFtc R7GTQ keNKEd j7vNaf nID9nc']")
for individualDiv in eachDiv:
    # 用find_elements查找当前div内的目标img,找不到返回空列表
    target_imgs = individualDiv.find_elements(By.XPATH, ".//img[@class='tvs3Id QwxBBf']")
    if target_imgs:
        # 取第一个匹配的img的src
        picUrl.append(target_imgs[0].get_attribute('src'))
        print('present')
    else:
        picUrl.append(" no pic ")
        print('not')
return picUrl

关键改动说明

  • 把find_element换成find_elements:找不到元素时返回空列表,不会抛出异常,能正常进入else分支。
  • XPath前缀加.:.//img表示在当前<div>的上下文范围内查找,确保只检查当前循环的div内部的img元素。
  • 避免重复查找:先把查找结果存到target_imgs变量里,不用重复调用查找方法,提升执行效率。

内容的提问来源于stack exchange,提问作者Aavash Kc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 14:16:21