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




