Playwright 使用本地已安装的 Chrome:channel、executablePath 与 CDP 连接

Playwright 默认使用自带的 Chromium 浏览器。以下四种方式可以改用本地安装的 Google Chrome。

方法一:channel=‘chrome’(最简单)

需要本机已安装 Google Chrome。

Python:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(channel="chrome", headless=False)
    page = browser.new_page()
    page.goto("https://example.com")
    browser.close()

JavaScript:

const { chromium } = require('playwright');

const browser = await chromium.launch({ channel: 'chrome', headless: false });
const page = await browser.newPage();
await page.goto('https://example.com');
await browser.close();

方法二:指定 executablePath

Python(各平台路径):

# Windows
executable_path = r"C:\Program Files\Google\Chrome\Application\chrome.exe"

# macOS
executable_path = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"

# Linux
executable_path = "/usr/bin/google-chrome"

browser = p.chromium.launch(executable_path=executable_path, headless=False)

方法三:launchPersistentContext(复用登录状态)

使用已登录账号、Cookie、插件的 Chrome 用户数据目录:

Python:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    context = p.chromium.launch_persistent_context(
        r"C:\Users\用户名\AppData\Local\Google\Chrome\User Data",
        channel="chrome",
        headless=False,
    )
    page = context.pages[0] or context.new_page()
    page.goto("https://example.com")

注意:Chrome 运行时会独占用户目录,使用此方法前需要关闭所有 Chrome 窗口,否则报错:

Profile is already in use

方法四:connectOverCDP(连接已启动的 Chrome)

先启动 Chrome 并开启远程调试端口(不影响正常使用):

# Windows
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222

# macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222

然后 Playwright 连接:

Python:

browser = p.chromium.connect_over_cdp("http://127.0.0.1:9222")
page = browser.contexts[0].pages[0]
page.goto("https://example.com")

JavaScript:

const browser = await chromium.connectOverCDP('http://127.0.0.1:9222');
const page = browser.contexts()[0].pages()[0];

这种方式完全复用当前 Chrome 的登录状态、Cookie 和扩展,且不独占用户目录。适合需要手动操作与自动化混合使用的场景。

方案对比

方法复用登录Chrome 需关闭保留插件
channel=‘chrome’
executablePath
launchPersistentContext
connectOverCDP