at backyard

Color my life with the chaos of trouble.

Playwright for GoでChrome操作を通じて取得した認証情報をそのまま保存して次回以降も利用していく方法

Playwright for Go(というかPlaywright)では launchPersistentContext を使うと、例えばChromeで普段利用しているユーザデータ(ブラウザプロファイル)を参照することができる。

https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context

もちろんこれは普段利用しているユーザデータを参照するだけでなく、Playwrightを通じて利用するブラウザ専用のプロファイルを作ることも可能。

※ちなみにPlaywrightでは認証情報を扱う仕組みが他にもあり、例えば認証が必要なサイトでテストをするようなケースではそちらを利用したほうが良かったりする。今回こちらに書いている方法はどちらかというと、ちょっと変化球なケースを想定している

以下にサンプルコードを示す。
なお、サンプルコードではローカルにインストールされているChromeを利用するような記述となっており、ヘッドレスモードはfalseとしている。
(そもそも、Playwright側で利用するChromiumなどでもこのやり方ができるかは未検証。)

この場合、実行するとChromeが立ち上がる挙動となるので、これで例えばサイトにログインした状態で終了した場合、再度同様のユーザデータ(ブラウザプロファイル)を参照して起動させることですでにログイン済みとなっていることを確認している。

runOption := &playwright.RunOptions{
    SkipInstallBrowsers: true,
}

if err := playwright.Install(runOption); err != nil {
    log.Fatalf("could not install playwright dependencies: %v", err)
}

pw, _ = playwright.Run()

userDataDir := "foo" // Chromeのuser-dataを保存するパスを指定する

contextOptions := playwright.BrowserTypeLaunchPersistentContextOptions{
    Channel:  playwright.String("chrome"),
    Headless: playwright.Bool(false),
}

browser, _ := pw.Chromium.LaunchPersistentContext(userDataDir, contextOptions)
page, _ := browser.NewPage()

以上、備忘録でした。