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

如何实现Selenium创建账户遇错自动重试的逻辑?

实现Selenium自动创建账户的错误重试逻辑

问题描述

我正在用Selenium实现自动填写表单创建账户的功能,点击「SKAPA KONTO」按钮后,有时会弹出错误提示,对应的HTML结构如下:

<span class="nike-unite-h1-no-image">An error occurred.</span> 
<input type="button" value="Dismiss this error">

我的需求是:

  • 若操作成功,继续执行后续脚本
  • 若出现该错误弹窗,点击「Dismiss this error」按钮,等待1-10秒随机延迟后,重新点击「CREATE ACCOUNT」按钮重试,直至成功

目前已有的相关代码片段:
等待可点击元素的通用写法:

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='nsg-button nsg-bg--black register-next-step-cta js-nextStepCta' and contains(.,'FORTSÄTT')]")))

点击创建账户的代码:

WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@value='CREATE ACCOUNT']"))).click()

解决方案

这种重试逻辑用无限循环+异常捕获的方式就能轻松实现,核心思路是每次点击创建按钮后,检查是否出现错误弹窗:如果出现就处理后重试,没出现就判定为成功并跳出循环。

下面是具体的代码实现:

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

# 假设你的浏览器实例名为browser
while True:
    # 等待并点击「CREATE ACCOUNT」按钮
    create_account_btn = WebDriverWait(browser, 20).until(
        EC.element_to_be_clickable((By.XPATH, "//input[@value='CREATE ACCOUNT']"))
    )
    create_account_btn.click()
    
    try:
        # 短时间内检查是否出现错误关闭按钮(这里设3秒,可根据实际情况调整)
        error_dismiss_btn = WebDriverWait(browser, 3).until(
            EC.element_to_be_clickable((By.XPATH, "//input[@value='Dismiss this error']"))
        )
        # 走到这里说明出错了,处理错误并准备重试
        print("检测到错误弹窗,关闭后重试...")
        error_dismiss_btn.click()
        # 生成1-10秒的随机延迟,避免触发反爬机制
        wait_duration = random.randint(1, 10)
        time.sleep(wait_duration)
        # 回到循环开头,重新尝试创建账户
        continue
    except:
        # 没捕获到错误弹窗,说明操作成功,跳出循环执行后续脚本
        print("账户创建操作成功,继续执行后续流程")
        break

# 后续自动化脚本写在这里

代码关键点说明

  • 无限循环:用while True持续重试,直到成功才通过break跳出
  • 短等待检查错误:检查弹窗时用3秒等待,避免成功场景下不必要的长时间等待
  • 异常捕获判断:通过try-except处理元素不存在的情况,比直接查找元素更稳妥(成功时错误按钮不存在,会触发异常)
  • 随机延迟:用random.randint生成1-10秒的等待时间,降低被网站反爬机制识别的风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:44:02