如何让Playwright借助已认证浏览器登录微软账户实现Dynamics 365等自动化测试
解决方案:让Playwright复用已信任浏览器的会话
可以通过复用日常浏览器的用户数据目录或连接已运行的浏览器实例,让Playwright继承已通过公司条件访问验证的登录状态,绕过53003错误,具体实现方式如下:
1. 加载浏览器用户数据目录
直接加载Chrome/Edge的用户数据目录,复用已有的信任凭证和登录会话:
Chrome配置示例
import { chromium } from '@playwright/test'; // Windows系统Chrome用户数据路径,需替换为你的实际用户名 const browser = await chromium.launchPersistentContext('C:\\Users\\你的用户名\\AppData\\Local\\Google\\Chrome\\User Data', { headless: false, // 禁用无头模式,避免触发条件访问的浏览器环境检测 args: ['--no-first-run', '--disable-extensions-except=必要扩展ID'], // 可选:排除无关扩展,减少干扰 }); const page = await browser.newPage(); await page.goto('https://你的Dynamics365或Azure Web Apps地址'); // 此时页面已处于已登录状态,可直接执行测试逻辑
Edge配置示例
仅需替换用户数据目录路径:
import { chromium } from '@playwright/test'; // Windows系统Edge用户数据路径,需替换为你的实际用户名 const browser = await chromium.launchPersistentContext('C:\\Users\\你的用户名\\AppData\\Local\\Microsoft\\Edge\\User Data', { headless: false, args: ['--no-first-run', '--disable-extensions-except=必要扩展ID'], }); const page = await browser.newPage(); await page.goto('https://你的Dynamics365或Azure Web Apps地址');
跨平台路径参考
- macOS:Chrome路径为
~/Library/Application Support/Google/Chrome,Edge为~/Library/Application Support/Microsoft Edge - Linux:Chrome路径为
~/.config/google-chrome,Edge为~/.config/microsoft-edge
2. 连接已运行的浏览器实例
如果不想关闭日常使用的浏览器,可以通过远程调试端口让Playwright连接已验证的会话:
- 修改Chrome/Edge快捷方式,在目标栏末尾添加参数:
--remote-debugging-port=9222 - 启动浏览器,手动完成登录并通过条件访问验证
- 在Playwright脚本中连接该实例:
import { chromium } from '@playwright/test'; const browser = await chromium.connectOverCDP('http://localhost:9222'); const page = await browser.newPage(); await page.goto('https://你的Dynamics365或Azure Web Apps地址'); // 执行测试逻辑
关键注意事项
- 运行前确保目标浏览器未被其他进程占用(加载用户数据目录时)
- 首次复用会话时,若日常浏览器需要MFA,需手动完成一次验证,后续会话会自动保留状态
- 确保Playwright进程有读取用户数据目录的权限
内容的提问来源于stack exchange,提问作者user28725345
相关产品推荐
相关产品推荐

