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

如何使用Selenium选中不同行内所有class为thumbImg的元素

问题修复方案

现有代码问题

  • 隐式等待配置顺序错误:当前代码先执行元素查找操作,再设置隐式等待,查找阶段等待规则还未生效,如果页面元素尚未渲染完成,自然会返回空列表。
  • 定位规则不准确且脆弱:使用//div[3]/div/div/div这种基于索引的绝对路径定位,只要页面DOM结构发生微小调整(比如新增一层div容器),路径就会失效,同时没有匹配你需要的thumbImg类属性,没有命中目标元素。

修复后代码

直接通过class属性定位目标元素,稳定性更高:

# 先配置隐式等待,再执行元素查找
driver.implicitly_wait(10)
info = []
# 匹配所有class为thumbImg的div元素,可按需加上层容器缩小范围,比如写成'//div[@class="thumbnails"]//div[@class="thumbImg"]'
elems = driver.find_elements_by_xpath('//div[@class="thumbImg"]')

for e in elems:
    # 若需要提取img链接可替换为 info.append(e.find_element_by_tag_name('img').get_attribute('src'))
    info.append(e)

如果是动态渲染页面,隐式等待不够稳定,可以替换为显式等待:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 最多等待10秒,直到所有thumbImg元素加载完成
wait = WebDriverWait(driver, 10)
elems = wait.until(EC.presence_of_all_elements_located((By.XPATH, '//div[@class="thumbImg"]')))
info = list(elems)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 06:06:03