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

Python Selenium入门:点击按钮后元素不显示如何自动刷新重试?

Selenium 循环重试加载目标元素实现方案

核心逻辑

  • 使用显式等待检测目标元素可见状态,避免直接查找元素触发异常导致程序中断
  • 用循环包裹「点击按钮→检测元素」的全流程,元素未出现则自动刷新页面重试
  • 目标元素成功可见后跳出循环,执行后续点击操作

完整实现代码

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

driver = webdriver.Firefox()
url = "https://www.compumsa.eu/item/GV-R55XTOC-4GD-Gigabyte-Radeon-RX-5500-XT-4GB-OC-PCIE-9320"
driver.get(url)
driver.maximize_window()

# 两个元素的定位表达式提前定义
add_item_btn_xpath = '//*[@id="ContentPlaceHolderMain_LBAddItem"]'
caddy_span_xpath = '//*[@id="SpanCaddy"]'
# 显式等待最长时间,单位秒,可根据实际网络情况调整
wait_timeout = 10

while True:
    try:
        # 等待加购按钮可点击后执行点击
        add_btn = WebDriverWait(driver, wait_timeout).until(
            EC.element_to_be_clickable((By.XPATH, add_item_btn_xpath))
        )
        add_btn.click()
        # 等待购物车元素可见
        itempanier = WebDriverWait(driver, wait_timeout).until(
            EC.visibility_of_element_located((By.XPATH, caddy_span_xpath))
        )
        # 走到这里说明元素已经成功显示,跳出循环
        break
    except TimeoutException:
        # 任意一步超时(按钮没加载/购物车元素没显示),就刷新页面重试
        driver.refresh()

# 循环跳出后即可执行对购物车元素的点击操作
itempanier.click()

# 后续其他逻辑

关键说明

  • 代码兼容最新版Selenium的元素定位语法,替换了已弃用的find_element_by_xpath写法
  • 超时时间可根据你的网络环境自行调整,页面加载慢可以适当调大数值
  • 所有异常场景都会自动触发重试,无需人工干预

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:45:02