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

Python Selenium登录时账号密码错误如何循环返回重新输入

实现方案

核心逻辑是将登录流程包裹在无限循环中,提交登录信息后检测错误提示元素是否存在,存在则提示错误后进入下一轮输入,不存在则判定登录成功跳出循环。
注意几个容易踩的坑:

  • 每次重试前必须清空输入框,否则新输入的账号密码会追加在旧内容之后,导致输入异常
  • 错误元素检测要用显式等待,不要直接调用find_element,否则会因为页面加载延迟出现误判
  • 你当前贴出的代码缺少登录按钮点击步骤,需要补充对应逻辑
参考代码
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

# 循环执行登录流程,直到登录成功
while True:
    # 输入用户名,每次输入前先清空输入框
    username_input = driver.find_element(By.NAME, value='j_username')
    username_input.clear()
    username_input.send_keys(input('Enter Username:'))

    # 输入密码,每次输入前先清空输入框
    password_input = driver.find_element(By.NAME, value='j_password')
    password_input.clear()
    password_input.send_keys(input('Enter Password:'))

    # 点击登录按钮,下面的定位需要替换为你页面实际的登录按钮定位
    login_btn = driver.find_element(By.CSS_SELECTOR, "button[type='submit']")
    login_btn.click()

    try:
        # 等待最多3秒,检测错误提示元素是否出现
        # 注意:下面的定位规则需要替换为你页面错误提示的实际定位,可通过F12开发者工具拾取元素获取
        WebDriverWait(driver, 3).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, ".alert-error"))
        )
        # 检测到错误提示,输出信息后进入下一轮循环
        print("Username/Password Incorrect")
        continue
    except TimeoutException:
        # 超时未检测到错误提示,判定登录成功,跳出循环
        break

# 后续登录成功后的业务逻辑写在这里
调整说明
  • 代码中登录按钮、错误提示的定位规则需要替换为你实际页面的对应元素定位,可通过浏览器F12开发者工具的元素选择器直接拾取获取
  • 显式等待的3秒阈值可根据内网页面的实际响应速度调整,页面响应慢可以改成5秒
  • 如果需要更严谨的登录成功判定,可以把超时后的逻辑替换为检测登录后专属元素(比如用户头像、欢迎语模块)是否加载,判断准确率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:24:35