ブラウザ自動操作ソフトのpuppeteer(パペティア)でファイルダウンロードをしたかったのですが、
ちょっとつまづいてしまったのでメモ。
Seleniumとかと比べて少し情報が少なかった印象なので、同様の自称で困っている人の助けになれば。
書かないこと
以下は省略します。
- puppeteerの導入
- その他基本操作などの説明
ファイルダウンロードするための準備
自動操作ブラウザに対してダウンロードの設定を行う。
const path = __dirname + "/downloads"; await page._client.send('Page.setDownloadBehavior', { behavior : 'allow', downloadPath: path });
つまづいたこと
自動操作でファイルをダウンロードする際、ダウンロード自体はしようとするが、「失敗しました。」との事でファイルがダウンロードされない。
もちろん通常のブラウザからのダウンロードは正常に行われる。
原因
パスの区切り文字が正しくなかった。
スラッシュ「/」で区切っていたが、エンマーク(バックスラッシュ)「¥¥」で区切らないといけなかった。
※エスケープの為、「¥」は2つ重ねる。
修正後
というわけで1行目のダウンロードパスを以下のように修正して、ダウンロードを確認。
const path = __dirname + "¥¥downloads"; await page._client.send('Page.setDownloadBehavior', { behavior : 'allow', downloadPath: path });
その他注意
Mac環境ではダウンロードパスは相対パスで良いが、Windows環境では絶対パスでないといけない模様。
__dirnameで絶対パスを生成しているのはその為。