Playwrightで既存のChrome profileを使った自動化
手順
1. 通常のChromeを一度起動して、ログインしておく
2. Chromeを完全に閉じる
code:shell
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir="/Users/<username>/Library/Application Support/Google/Chrome" --profile-directory=Default
プロファイル名やフォルダが違う場合は調整する
ブラウザ利用時に使用しているuser-data-dirはchrome://versionから確認できる
4. 以下のスクリプトを実行
code:index.ts
import { chromium } from "playwright";
(async () => {
const defaultContext = browser.contexts()0; const page = await defaultContext.newPage();
await page.goto("<ログインセッションが必要なWebサイトのURL>");
await new Promise(() => {});
})();
ハマり
chromium.launchPersistentContext(userDataDir, options)は使えない
Chromeの起動含めてPlaywrightにやらせたいがChromeがセキュリティ上の理由で毎回再ログインを求めてしまう https://gyazo.com/e80db408a7cd6495ce979bc8ac0209f8
https://gyazo.com/3be86435cf4dd37658d367b65545d940
既存のコンテキストを利用して新しいpageを作成しないとプロファイルを利用できない
browser.newPage()を使うと、プロファイルを無視した新しいBrowserContextが生成されてしまう