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

如何用Selenium实现Python脚本循环刷新直至按钮可点击

完善Python+Selenium抢票脚本方案

修改后的完整代码

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

PATH = "D:\\chromedriver.exe"
target_url = "https://ticketing.liverpoolfc.com/en-GB/events/liverpool%20women%20v%20everton%20women/2022-9-25_18.45/anfield?hallmap"
# 替换成你实际购物车页面的URL特征关键词
cart_url_keyword = "basket"

driver = webdriver.Chrome(PATH)
driver.get(target_url)

# 处理初始弹窗(如果存在)
try:
    close_btn = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, "/html/body/div[7]/div/button"))
    )
    close_btn.click()
except:
    print("无弹窗或弹窗加载超时")

while True:
    try:
        # 短超时检查目标按钮是否可点击
        seat_btn = WebDriverWait(driver, 5).until(
            EC.element_to_be_clickable((By.XPATH, "/html/body/div[7]/div/div[4]/div[1]/div[3]/div[2]/div[2]/div/div[3]/div[1]/button[2]"))
        )
        seat_btn.click()
        print("已点击'CHOOSE SEAT FOR ME'按钮")
        
        # 等待URL跳转至购物车页面
        WebDriverWait(driver, 30).until(
            EC.url_contains(cart_url_keyword)
        )
        print("已成功添加至购物车,脚本停止")
        break
    except:
        # 按钮不可用时刷新页面重试
        print("按钮不可用,正在刷新页面...")
        driver.refresh()
        time.sleep(2)  # 避免过于频繁请求触发网站限制

# 按需添加关闭浏览器的代码
# driver.quit()

核心逻辑说明

  • 循环重试机制:通过while True实现无限循环,直到完成按钮点击并跳转到购物车页面才终止脚本
  • 短超时检测:将按钮等待超时设为5秒,确保按钮不可用时能快速进入刷新流程
  • URL跳转监控:利用url_contains判断是否成功进入购物车页面,只需替换关键词为实际购物车URL的特征即可
  • 防请求限制:刷新后加入2秒等待,避免频繁请求被网站拦截

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:30:52