使用Selenium登录Google遇异常:账号输入后未触发下一步、密码无法填入
Google账号登录Selenium问题修复方案
问题根源及解决步骤
缺少账号输入后的下一步触发操作
Google登录页面输入账号后不会自动跳转,必须主动触发“下一步”才能进入密码输入环节。原代码仅完成账号输入,未执行点击按钮或模拟回车操作,导致后续密码输入逻辑无法触发。- 解决:输入账号后,要么等待并点击“下一步”按钮,要么直接模拟按回车键,后者稳定性更高。
密码变量类型错误
原代码中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
相关产品推荐
相关产品推荐

