如何以另一Windows用户身份通过PlayWright在Chrome中执行测试?
解决Playwright以指定Windows用户身份运行Chrome的问题
核心思路
无需切换VS Code的运行身份,直接让Playwright调用runas.exe启动目标用户身份的Chrome实例,即可在测试流程中复用该权限环境。
具体实现步骤
修改Playwright配置文件
在playwright.config.js/playwright.config.ts中,自定义Chromium的启动命令,通过runas.exe指定以'B123'身份启动Chrome:TypeScript配置示例:
import { defineConfig, devices } from '@playwright/test'; export default defineConfig({ use: { browserName: 'chromium', // 指定runas作为启动程序 executablePath: 'C:\\Windows\\System32\\runas.exe', args: [ '/savecred', '/user:prod\\B123', '"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" --remote-debugging-port=9222' ], }, });注:添加
--remote-debugging-port=9222是为了让Playwright能正常连接到该Chrome实例,保证测试通信。首次运行验证身份
第一次执行测试时,系统会弹出'B123'的密码输入框,输入正确密码后,/savecred参数会将凭据保存到系统,后续运行无需再次输入。避免实例冲突
为防止不同用户的Chrome数据互相干扰,可在启动参数中指定独立的用户数据目录:
在args数组里追加--user-data-dir="C:\\Temp\\B123ChromeProfile"即可。
替代方案:通过批处理文件调用
如果直接在配置中写参数易出错,可先创建批处理文件(如StartChromeAsB123.bat):
@echo off C:\Windows\System32\runas.exe /savecred /user:prod\B123 "C:\Program Files\Google\Chrome\Application\chrome.exe --remote-debugging-port=9222 --user-data-dir=C:\Temp\B123ChromeProfile"
再在Playwright配置中指定该批处理为启动路径:
executablePath: 'C:\\Your\\Path\\StartChromeAsB123.bat',
注意事项
- 确保当前登录用户'A123'拥有执行
runas.exe并调用'B123'权限的系统权限,避免被UAC拦截。 - 若
/savecred未生效,可检查Windows凭据管理器中是否已保存'B123'的凭据,或重新手动输入一次密码触发保存。
内容的提问来源于stack exchange,提问作者Jehlo
相关产品推荐
相关产品推荐

