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

selenium中如何搭配使用open/input函数与send_keys方法实现密码批量登录?

Selenium 关联open函数和send_keys实现密码遍历登录方案

可以将open函数与send_keys搭配使用,你的需求完全可以实现,现有代码存在两处核心错误:

  • 执行password.send_keys(passwords)时,passwords变量还未定义,你把读取密码文件的逻辑写在了调用send_keys之后
  • 没有添加遍历逻辑,现有代码只会尝试一次登录,无法循环读取所有密码进行尝试

修正后的完整实现代码

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

# 第一步:提前读取密码列表,过滤空行、首尾空格,避免无效尝试
with open('C:/Users/user/Desktop/Python folder/python projects/passlist.txt', 'r', encoding='utf-8') as f:
    passwords = [line.strip() for line in f if line.strip()]

# 第二步:提前定位页面元素,无需重复定位
username = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='username']")))
password = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='password']")))
log_in_btn = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[type='submit']")))

# 填写固定用户名
username.clear()
username.send_keys("myusername")

# 第三步:遍历所有密码尝试登录
login_success = False
for current_pwd in passwords:
    # 清空上一次输入的密码
    password.clear()
    # 传入当前遍历到的密码
    password.send_keys(current_pwd)
    sleep(1)
    # 点击登录按钮
    log_in_btn.click()
    sleep(2)
    
    # 请在此处添加你自己的登录成功判断逻辑,示例逻辑仅供参考
    # 示例:判断当前url是否包含登录后才有的路径,或页面是否出现登录成功提示
    # if "welcome" in driver.page_source:
    #     login_success = True
    #     print(f"登录成功,有效密码为:{current_pwd}")
    #     break
    
    # 若网站登录失败会刷新页面,需在此处重新定位密码输入框和提交按钮,避免元素失效报错
    # password = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='password']")))
    # log_in_btn = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[type='submit']")))

if not login_success:
    print("所有密码尝试完毕,未找到有效密码")

注意事项

  • 必须添加登录成功的判断逻辑,否则程序会遍历完所有密码才停止,无法识别出正确密码
  • 可根据目标网站的反爬策略调整等待时长,或替换为显式等待逻辑,避免操作过快被拦截
  • 若需要支持用户手动输入密码,可将读取文件逻辑替换为input()函数,再将拿到的内容传入send_keys()即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:39:04