You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Chrome 65升级后Selenium测试中Google登录无法跳转问题求助

解决Chrome 65 + Selenium Google登录跳转挂起的问题

我之前也碰到过几乎一模一样的坑!Chrome 65版本在处理第三方登录的弹窗/跳转逻辑上确实做了不少调整,哪怕你匹配了对应版本的chromedriver,也可能因为新的安全机制触发这个问题。下面是亲测有效的几个解决方向:

1. 禁用Chrome的站点隔离功能

Chrome 65默认开启了**站点隔离(Site Isolation)**机制,它会把不同站点的页面放在独立进程中运行,直接导致Selenium无法追踪到登录后的跳转窗口。通过启动参数关闭这个功能是最直接的解决方案:

from selenium import webdriver

options = webdriver.ChromeOptions()
# 禁用站点隔离试验特性
options.add_argument("--disable-site-isolation-trials")
driver = webdriver.Chrome(options=options)

2. 指定固定的Chrome用户数据目录

默认的临时用户目录经常会丢失Cookie权限或会话状态,指定一个自定义的用户目录可以避免这类问题:

options.add_argument("--user-data-dir=/Users/yourname/Documents/ChromeTestProfile")
# 可选:单独指定测试用的子Profile,不影响日常浏览器数据
options.add_argument("--profile-directory=SeleniumTest")

第一次运行时Chrome会自动生成这个目录,你可以手动登录一次Google账号保存会话,后续测试就能复用这个已登录状态,也能减少跳转异常的概率。

3. 切换到新版无头模式测试

如果你的测试场景允许无头运行,Chrome 65的新版无头模式对OAuth跳转的兼容性反而更好,大概率能绕过这个问题:

options.add_argument("--headless=new")  # 新版无头模式更接近正常Chrome的行为
options.add_argument("--disable-gpu")
options.add_argument("--window-size=1920x1080")  # 避免页面布局异常

4. 提前配置自动登录相关偏好

Chrome 65可能默认启用了“阻止自动登录”的设置,通过prefs提前配置可以解除限制:

options.add_experimental_option("prefs", {
    "credentials_enable_service": True,
    "profile.password_manager_enabled": True
})

如果以上方法都没效果,临时降级Chrome到64版本也能应急,但长远来看还是适配65+版本更稳妥。我当时就是靠禁用站点隔离直接搞定的,你可以先试试这个方案!

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

火山引擎 最新活动