如何使用Selenium完成Google身份验证 解决端到端测试登录报错问题
Google SSO 端到端测试登录解决方案
你遇到的Google拒绝访问报错,本质是Google的反爬虫机制识别到了Selenium启动的浏览器自带的自动化标识,判定为非人类操作,因此拦截了登录请求。以下是3种可行的解决方式:
方案1:修改Selenium启动配置规避特征检测
直接修改Chrome启动参数,移除所有自动化相关的特征标识,规避Google的检测:
- 启动时添加
--disable-blink-features=AutomationControlled参数,删除浏览器的自动化控制标记 - 排除
enable-automation开关,关闭Chrome顶部的自动化操作提示条 - 替换默认的Selenium专属UA为普通桌面浏览器UA
Python示例代码:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 移除自动化标识 chrome_options.add_argument("--disable-blink-features=AutomationControlled") chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"]) chrome_options.add_experimental_option("useAutomationExtension", False) # 替换UA chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36") driver = webdriver.Chrome(options=chrome_options)
修改完成后再执行Google账号输入、密码输入的操作即可正常完成登录。
方案2:加载已登录的本地浏览器Profile
提前用本地Chrome手动登录你的测试Google账号,之后Selenium启动时直接加载该账号对应的用户Profile,完全跳过SSO登录流程:
- 本地Chrome用户数据目录默认路径:
- Windows:
C:\Users\<你的系统用户名>\AppData\Local\Google\Chrome\User Data - Mac:
~/Library/Application Support/Google/Chrome/ - Linux:
~/.config/google-chrome/
- Windows:
- 启动配置添加如下参数即可:
# 替换为你本地的用户数据目录路径 chrome_options.add_argument("user-data-dir=/Users/xxx/Library/Application Support/Google/Chrome/") # 指定要加载的Profile,默认登录的是Default文件夹 chrome_options.add_argument("profile-directory=Default")
该方式不会触发Google的登录校验,稳定性最高,适合长期跑测试用例的场景。
方案3:直接注入登录凭证绕过SSO
如果你的测试不需要验证Google登录的交互流程,只需要登录后测试应用本身的功能,可以直接调用Google OAuth接口获取登录凭证,注入到浏览器中跳过登录:
- 提前在Google Cloud控制台为测试应用创建OAuth测试客户端,把你的测试账号加入到测试用户列表中
- 调用OAuth接口获取id token和access token,把对应凭证写入到应用的Cookie或本地存储中,刷新页面即可完成登录
该方式不需要操作Google登录页,完全避免被Google拦截的问题。
注意事项
- 不要用测试账号短时间内频繁发起登录请求,容易被Google标记为风险账号,触发更严格的校验
- 测试环境尽量使用固定IP,避免异地登录触发Google的安全验证
内容的提问来源于stack exchange,提问作者Kurnal saini
相关产品推荐
相关产品推荐

