Windows下能否将Playwright(ms-playwright)安装到非%USERPROFILE%目录?
问题描述
工作电脑存在安全限制,仅允许在特定的「Developer exemption/exception」目录下运行可执行文件和调用DLL。计划使用Microsoft Playwright构建端到端测试,但它默认安装在两个位置:
- 代码文件夹(示例路径:
C:\targetDirectory\applications\targetApplication\...) %USERPROFILE%目录下的大量可执行文件和DLL,具体路径为C:\Users\patflyer\AppData\Local\ms-playwright(主要存放浏览器文件)
需要确认两个方案的可行性:
- 能否将Playwright相关组件(包括自带的Google Chrome、Mozilla Firefox和Webkit浏览器)全部安装到指定目录
C:\targetDirectory\下,以符合IT安全豁免政策? - 若上述方案无法实现,是否可以不安装自带浏览器,转而使用
C:\Program Files\下已安装的系统浏览器?
另外,在查找安装相关内容时,发现firefox.js中有如下报错信息(已翻译为中文):
lib\server\firefox\firefox.js: if (!_path.default.isAbsolute(os.homedir())) throw new Error(Cannot launch Firefox with relative home directory. Did you set ${os.platform() === 'win32' ? 'USERPROFILE' : 'HOME'} to a relative path?);
翻译:如果os.homedir()不是绝对路径,则抛出错误:「无法使用相对路径的主目录启动Firefox。你是否将Windows系统下的USERPROFILE(或其他系统下的HOME)设置为相对路径了?」
解决方案
方案一:将Playwright组件全部安装到指定目录
可以通过环境变量和安装参数实现,步骤如下:
- 指定浏览器安装目录:设置系统或命令行环境变量
PLAYWRIGHT_BROWSERS_PATH=C:\targetDirectory\ms-playwright,Playwright会将自带浏览器下载到该目录下。 - 指定核心包安装目录:如果需要把Playwright核心组件也安装到目标目录,使用npm的
--prefix参数执行安装:
核心包会被安装到npm install playwright --prefix C:\targetDirectory\playwright-coreC:\targetDirectory\playwright-core\node_modules路径下。 - 验证生效:运行测试前确保
PLAYWRIGHT_BROWSERS_PATH环境变量保持生效,Playwright会自动从指定目录加载浏览器。
注意:你发现的Firefox报错仅在USERPROFILE被设置为相对路径时触发,系统默认的USERPROFILE是绝对路径,和浏览器安装目录无关,无需修改代码。
方案二:使用已安装的系统浏览器
若无法将自带浏览器部署到豁免目录,可直接调用系统已安装的浏览器:
- 跳过自带浏览器安装:安装Playwright时添加参数跳过浏览器下载:
npm install playwright --with-deps=false - 测试脚本中指定浏览器路径:在测试代码里配置系统浏览器的绝对路径,示例如下:
- Chrome:
const { chromium } = require('playwright'); (async () => { const browser = await chromium.launch({ executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe' }); // 测试逻辑 await browser.close(); })(); - Firefox:
const { firefox } = require('playwright'); (async () => { const browser = await firefox.launch({ executablePath: 'C:\\Program Files\\Mozilla Firefox\\firefox.exe' }); // 测试逻辑 await browser.close(); })();
- Chrome:
- 权限确认:需确保
C:\Program Files\下的浏览器路径已被IT安全政策纳入豁免范围,若未包含需申请添加。
内容的提问来源于stack exchange,提问作者Patrick Walters
相关产品推荐
相关产品推荐

