You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下能否将Playwright(ms-playwright)安装到非%USERPROFILE%目录?

问题描述

工作电脑存在安全限制,仅允许在特定的「Developer exemption/exception」目录下运行可执行文件和调用DLL。计划使用Microsoft Playwright构建端到端测试,但它默认安装在两个位置:

  • 代码文件夹(示例路径:C:\targetDirectory\applications\targetApplication\...)
  • %USERPROFILE%目录下的大量可执行文件和DLL,具体路径为C:\Users\patflyer\AppData\Local\ms-playwright(主要存放浏览器文件)

需要确认两个方案的可行性:

  1. 能否将Playwright相关组件(包括自带的Google Chrome、Mozilla Firefox和Webkit浏览器)全部安装到指定目录C:\targetDirectory\下,以符合IT安全豁免政策?
  2. 若上述方案无法实现,是否可以不安装自带浏览器,转而使用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组件全部安装到指定目录

可以通过环境变量和安装参数实现,步骤如下:

  1. 指定浏览器安装目录:设置系统或命令行环境变量PLAYWRIGHT_BROWSERS_PATH=C:\targetDirectory\ms-playwright,Playwright会将自带浏览器下载到该目录下。
  2. 指定核心包安装目录:如果需要把Playwright核心组件也安装到目标目录,使用npm的--prefix参数执行安装:
    npm install playwright --prefix C:\targetDirectory\playwright-core
    
    核心包会被安装到C:\targetDirectory\playwright-core\node_modules路径下。
  3. 验证生效:运行测试前确保PLAYWRIGHT_BROWSERS_PATH环境变量保持生效,Playwright会自动从指定目录加载浏览器。

注意:你发现的Firefox报错仅在USERPROFILE被设置为相对路径时触发,系统默认的USERPROFILE是绝对路径,和浏览器安装目录无关,无需修改代码。

方案二:使用已安装的系统浏览器

若无法将自带浏览器部署到豁免目录,可直接调用系统已安装的浏览器:

  1. 跳过自带浏览器安装:安装Playwright时添加参数跳过浏览器下载:
    npm install playwright --with-deps=false
    
  2. 测试脚本中指定浏览器路径:在测试代码里配置系统浏览器的绝对路径,示例如下:
    • 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();
      })();
      
  3. 权限确认:需确保C:\Program Files\下的浏览器路径已被IT安全政策纳入豁免范围,若未包含需申请添加。

内容的提问来源于stack exchange,提问作者Patrick Walters

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 13:31:07