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

Playwright在MacBook中连接已有Chrome浏览器遇空白页问题

解决Playwright启动Chrome持久化上下文后页面空白的问题

问题分析

你遇到的空白页(about:blank)问题,主要有几个常见原因:

  • URL缺少协议头(http/https),浏览器无法解析正确的目标地址
  • 指定的Chrome用户数据目录正在被其他Chrome实例占用,导致Playwright无法正常接管会话
  • 权限或沙箱限制阻止页面加载

解决方案

1. 补全URL协议头

你的page.goto("amazon.co.uk/")没有指定协议,浏览器会将其当作相对路径处理,自然无法加载亚马逊页面。必须加上https://:

await page.goto("https://amazon.co.uk/");

2. 避免用户数据目录冲突

如果当前有Chrome浏览器正在运行,它会锁定用户数据目录,Playwright启动的持久化上下文无法正常使用该目录,进而导致页面加载异常。解决方法二选一:

  • 关闭所有Chrome窗口后再运行测试代码
  • 复制一份Chrome用户数据目录到新路径,使用复制后的目录启动上下文:
    const userDataDir = "/Users/SinhAb/Library/Application Support/Google/Chrome/Copy/";
    // 先手动复制原目录到Copy路径,再用这个路径启动
    

3. 添加必要的启动参数(可选)

如果是权限或沙箱问题导致的加载失败,可以在启动时添加参数:

const browserContext = await chromium.launchPersistentContext(userDataDir, {
  channel: "chrome",
  args: [
    "--no-sandbox",
    "--disable-dev-shm-usage"
  ]
});

修改后的完整代码

test("Open chrome with existing session", async ({}) => {
  // 建议使用复制后的用户数据目录,避免与正在运行的Chrome冲突
  const userDataDir = "/Users/SinhAb/Library/Application Support/Google/Chrome/Copy/";
  const browserContext = await chromium.launchPersistentContext(userDataDir, {
    channel: "chrome",
    args: ["--no-sandbox", "--disable-dev-shm-usage"]
  });
  let page = browserContext.pages().at(0);
  if (!page) page = await browserContext.newPage();
  // 补全https协议头
  await page.goto("https://amazon.co.uk/");
  await page.waitForTimeout(5000);
});

内容的提问来源于stack exchange,提问作者Abhinaba Sinha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:53:19