Jenkins无GUI自动化中Azure SSO部署引发浏览器配置文件弹窗问题
解决Azure SSO启用后无头Windows环境下UI自动化的浏览器配置文件弹窗问题
问题背景
应用部署Azure SSO后,Jenkins流水线在无GUI/无头模式(无活动会话的RDP代理)下执行UI自动化测试时被阻断:首次启动Chrome/Edge访问应用时,会弹出Windows原生的「切换配置文件」/「创建新配置文件」对话框,而Selenium、Playwright等框架无法识别或交互这个原生弹窗,导致测试失败。此前未启用SSO时自动化运行正常,尝试用默认配置文件启动也无法解决。
可行解决方案
1. 预配置浏览器配置文件并指定启动
- 在有GUI的环境下,手动启动目标浏览器,创建一个专用配置文件,完成Azure SSO的首次登录流程(让配置文件保存SSO认证状态)
- 在自动化代码中,指定该预创建的配置文件路径启动浏览器:
- Chrome示例(Selenium):
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() # 指定预创建的用户数据目录 options.add_argument(r"--user-data-dir=C:\AutomationProfiles\ChromeSSOProfile") driver = webdriver.Chrome(options=options) - Edge示例(Playwright):
from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch_persistent_context( user_data_dir=r"C:\AutomationProfiles\EdgeSSOProfile", headless=True, args=["--no-first-run"] ) page = browser.new_page() page.goto("your-app-url")
- Chrome示例(Selenium):
2. 通过注册表/组策略禁用配置文件选择弹窗
- 在Jenkins代理机器上,修改浏览器对应的注册表项,强制使用指定配置文件:
- Chrome:打开注册表编辑器,定位到
HKEY_LOCAL_MACHINE\Software\Policies\Google\Chrome,新建字符串值DefaultProfile,设置为预创建的配置文件夹名称;同时新建DWORD值BrowserProfileEnabled,设置为0(禁用配置文件切换提示) - Edge:定位到
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Edge,添加相同的DefaultProfile和BrowserProfileEnabled项
- Chrome:打开注册表编辑器,定位到
- 配置完成后重启浏览器服务,确保生效
3. 添加浏览器启动参数绕过首次配置提示
- 在自动化启动浏览器时,添加以下参数组合,抑制首次启动的配置文件弹窗:
- Chrome/Edge通用参数:
--no-first-run、--disable-default-apps、--disable-popup-blocking - 示例(Selenium启动Edge):
EdgeOptions options = new EdgeOptions(); options.addArguments("--no-first-run"); options.addArguments("--disable-default-apps"); options.addArguments(r"--user-data-dir=C:\AutomationProfiles\EdgeSSOProfile"); EdgeDriver driver = new EdgeDriver(options);
- Chrome/Edge通用参数:
4. 调整Jenkins代理的会话运行模式
- 避免Jenkins代理完全运行在无活动会话的环境:
- 将Jenkins Windows服务设置为「允许与桌面交互」(服务属性-登录-勾选「允许服务与桌面交互」)
- 或使用
tscon命令将RDP会话切换到后台,保持会话上下文,让浏览器运行时不触发配置文件选择弹窗
内容的提问来源于stack exchange,提问作者QualityMatters
相关产品推荐
相关产品推荐

