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

Selenium如何不使用try except判断元素是否存在或可见?

解决方案

你之前调用.isDisplayed()不生效的核心原因是:find_element方法在找不到匹配元素时会直接抛出NoSuchElementException异常,代码根本执行不到调用.isDisplayed()的步骤。无需使用try except的实现方式如下:

核心思路

使用find_elements(复数形式)替代find_element,该方法在找不到匹配元素时只会返回空列表,不会抛出异常,只需判断返回列表的长度即可判断对应位置的图片是否存在。

实现代码

# 首先获取所有缩略图对应的li元素列表
thumb_items = driver.find_elements_by_xpath('//*[@id="goods_thumb_content"]/ul/li')

# 取前三张图片(按你的场景3张是保底存在的)
Image1 = thumb_items[0].get_attribute("data-bigimg")
Image2 = thumb_items[1].get_attribute("data-bigimg")
Image3 = thumb_items[2].get_attribute("data-bigimg")

Image4 = None
# 判断是否存在第四张图片
if len(thumb_items) >= 4:
    Image4 = thumb_items[3].get_attribute("data-bigimg")

# 后续逻辑可正常执行,Image4为None即代表没有第四张图

Selenium 4+ 适配写法

如果你使用的是Selenium 4及以上版本,find_elements_by_xpath方法已被弃用,推荐使用如下写法:

from selenium.webdriver.common.by import By

thumb_items = driver.find_elements(By.XPATH, '//*[@id="goods_thumb_content"]/ul/li')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 10:18:13