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

使用Selenium登录Google遇异常:账号输入后未触发下一步、密码无法填入

Google账号登录Selenium问题修复方案

问题根源及解决步骤

  1. 缺少账号输入后的下一步触发操作
    Google登录页面输入账号后不会自动跳转,必须主动触发“下一步”才能进入密码输入环节。原代码仅完成账号输入,未执行点击按钮或模拟回车操作,导致后续密码输入逻辑无法触发。

    • 解决:输入账号后,要么等待并点击“下一步”按钮,要么直接模拟按回车键,后者稳定性更高。
  2. 密码变量类型错误
    原代码中password = json_load['password'],末尾多了一个逗号,导致password变成了元组(tuple)类型,而send_keys()仅接受字符串参数,因此无法正常填入密码框。只需去掉末尾逗号即可修复。

修复后的完整代码

import json
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
import undetected_chromedriver as uc

# 读取登录凭证
with open('creds.json', 'r') as json_file:
    json_load = json.load(json_file)
password = json_load['password']  # 移除末尾逗号,确保为字符串类型
login = json_load['login']

driver = uc.Chrome()
wait = WebDriverWait(driver, 20)
driver.get('https://accounts.google.com/ServiceLogin')  

# 输入账号并模拟回车触发下一步
account_input = wait.until(EC.visibility_of_element_located((By.NAME, 'identifier')))
account_input.send_keys(login)
account_input.send_keys(Keys.ENTER)

# 等待密码框加载完成并输入密码
password_input = wait.until(EC.visibility_of_element_located((By.NAME, 'password')))
password_input.send_keys(password)
# 可选:模拟回车完成登录
password_input.send_keys(Keys.ENTER)

额外提示

  • 使用undetected_chromedriver时,可适当添加短时间等待(如time.sleep(1)),降低被Google反爬机制检测的风险
  • 如果“下一步”按钮通过NAME定位不稳定,可改用XPATH定位:By.XPATH, '//span[text()="下一步"]'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:41:07