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 | ✓ | 否 | ✓ |
