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

如何解决Selenium中send_keys在Outlook密码输入页面失效的问题

问题原因与解决方案

你遇到的密码输入无响应问题,主要有以下几个常见原因,对应解决方案如下:

核心原因

  • 隐式等待只能保证找到DOM中存在的元素,无法保证元素处于可交互状态:你提交账号后页面跳转过程中,密码框可能已经被加载到DOM里,但还没完成渲染、没有获得输入焦点,此时调用send_keys就会无响应。
  • 重复设置隐式等待无效:implicitly_wait是全局生效的配置,只需要在初始化driver后设置一次即可,多次设置不会产生单次等待的效果。
  • Outlook登录页存在跳转过渡动画:账号提交后到密码框完全可用之间有短暂的过渡时间,隐式等待无法覆盖这类状态校验。

修复方案

  1. 替换为显式等待,等待密码框处于可点击状态后再操作,同时可以先点击元素激活焦点再输入
  2. 可在账号提交后增加短时间的强制等待,跳过页面过渡阶段
  3. 修正Windows路径的转义问题,避免driver初始化异常

修复后示例代码

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
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

# 路径加r转为raw字符串避免转义异常
PATH = r'C:\Program Files (x86)\chromedriver.exe'
driver = webdriver.Chrome(PATH)
# 隐式等待全局只需设置一次
driver.implicitly_wait(7)

driver.get('https://outlook.office.com/mail/')

login = driver.find_element(By.NAME, "loginfmt")
login.send_keys("emailhere")
login.send_keys(Keys.RETURN)

# 加短暂等待跳过页面跳转过渡
time.sleep(2)

# 显式等待密码框可点击
wait = WebDriverWait(driver, 10)
password = wait.until(EC.element_to_be_clickable((By.NAME, "passwd")))
# 先点击激活输入框
password.click()
password.send_keys("passwordhere")
password.send_keys(Keys.RETURN)

内容的提问来源于stack exchange,提问作者Hides - In - Barrels

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:57:03