如何用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
相关产品推荐
相关产品推荐

