Puppeteerで作ったスクリプトを実行可能ファイル化する


TL; DR

  • Node.jsを実行可能ファイルに変換するのにPkgを使用した。
  • puppeteer.launch()のオプションにexecutablePath: /Applications/Google Chrome.app/Contents/MacOS/Google Chromeを指定する。要は普段使っているであろうGoogle Chromeのパスに変更してあげる必要がある。
  • 共有先のPCによっては実行権限が無かったりするので、chmodで付与してあげる。

課題

  • ブラウザ上で行っていた管理者限定の単純作業を自動化したい。

やったこと

  • ブラウザ操作はPuppetterでやる。ログイン情報とかはscriptの実行時に尋ねるようにする。今回はenquirerを使った。
  • 自分の権限的に見れない画面だったので、保存したHTMLファイルを貰って、それをローカルサーバーで開き、Puppetterの自動入力の実装をした。
  • Puppeteerで作ったはいいが環境設定の手間をかんがえると、repositryを共有して yarn installyarn start みたいに実行させるわけにもいかなそう。
  • とりあえず動作確認したいだけなので、そのためだけにGUIアプリまで作るのだるい。
  • PkgというNode.jsを実行可能ファイル化してくれる君を見つけたのでそれを使うことにした。
  • いざ、作って共有!実行してもらったところ、command not found と怒られてよくよく見ると、ファイルに実行権限がなかったので、chmod 755 ./コマンド名で実行可能にしてあげる。

感想

headless: falseにした時の自動で動いてる感、パソコンハックされてる感あって面白い。
XPath使ったことなかったけど、柔軟にDOMにアクセスできるの便利だった。XPath HelperというXPathを入力すると該当の要素をハイライトしてくれるChrome拡張があるのでおススメ。