Puppeteerでブラウザのイベントを捕捉する

ちょっとした小ネタなのですが、Puppeteerを動かしていて手動でタブを閉じちゃう人がいたり、browser.closeした後にそれを捕捉して何か動かしたいケースがあります。こういったイレギュラーな対応をする方法を探ってみました。

故に今回のネタは非常に小粒です。

今回利用するツール等

特に追加のモジュールは必要ありません。作成したBrowserインスタンスに対してイベント設定を付与し、アクション時に発火するようにするというだけです。

ソースコードではモジュールのロード部分までは以下のエントリーを参考にしてみてください。

Puppeteerを使ってX(旧Twitter)へのポストを自動化する

ソースコード

ブラウザのイベント捕捉は、browser.onで作成します。主に三種類あり

  • targetcreated : 起動時にページを開くと自動的に発火する。pageだけじゃなくservice workerなどの色々なものが出てくる。
  • targetdestroyed : 手動でタブを閉じたり、browser.close時に発火する。
  • disconnected : コードでbrowser.closeなどをした場合に発火。ただし、targetdestroyedがある場合はそちらが優先される。

特にtargetdestrpyedをセットしていない場合、動いてるブラウザを閉じたり、タブを閉じるとクラッシュしてエラーとなります。これを入れておくことでそれらを検知して通知したりなどが可能になります。

また、disconnectedは単独でないと利用できませんが、browser.close後に何か作業をやらせたい場合に、それが終了するのを待ってから捕捉し実行させることが可能になります。

関連リンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)