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

Python Selenium点击加载更多按钮不工作问题求助

Selenium点击加载更多按钮不生效问题排查与修复

核心错误原因

  • 缺少加载等待逻辑:单次点击后,页面需要时间请求商品数据、渲染新内容,旧的加载按钮会临时处于禁用状态,你代码没有等待就立刻执行下一次查找点击,要么找不到元素直接跳出循环,要么点击无响应
  • 异常捕获逻辑不合理:全量try-except把所有报错(比如元素不可见、点击被拦截、元素未加载等)全部静默处理,你无法感知具体错误原因
  • 元素定位不准确:你定位的是按钮内部的span文本节点,实际可点击的交互元素是外层的button标签,直接点击span大概率无法触发按钮的点击事件
  • 未做元素可视区域适配:如果按钮不在当前浏览器视口范围内,Selenium默认点击操作会触发异常,你的全量异常捕获直接跳过了点击步骤
  • 固定循环次数逻辑不合理:你设置了固定1000次循环,没有判断按钮是否真的存在/可点击,不符合实际业务场景

修复后的可运行代码

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

url = 'https://www.pursemall.ru/vuitton/damier-azur'
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(url)
# 显式等待最长超时时间设为10秒,可根据你的网络情况调整
wait = WebDriverWait(driver, 10)

while True:
    try:
        # 定位外层可点击的button元素,等待元素处于可点击状态再操作
        load_more_button = wait.until(EC.element_to_be_clickable(
            (By.XPATH, "//button[contains(., 'Load More Products')]")
        ))
        # 滚动到按钮居中位置,避免视口外点击失败
        driver.execute_script("arguments[0].scrollIntoView({block: 'center'});", load_more_button)
        # 短延时避免点击过快被反爬拦截
        time.sleep(0.5)
        load_more_button.click()
        # 等待新商品加载完成,可调整等待时长适配你的网络环境
        time.sleep(2)
    except:
        # 触发异常说明没有可点击的加载更多按钮,全部商品加载完成
        print("task load more button completed")
        break

# 此处添加你后续的商品数据提取逻辑

优化建议

如果要进一步提升稳定性,可以在点击后判断商品列表的数量是否发生变化,避免因为网络波动导致加载未完成就提前终止循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:48:05