puppeteer でダイアログ(confirm / prompt)を操作
こんにちは、開発室のA部です。
とても、寒い。
百何年ぶりに雪がまったく降らないとニュースになってますが、この際今年は雪が降らない年で良いんじゃないでしょうか?隔年で交代で降るみたいな。
個人的にウィンタースポーツとかに興味が全く無いので降らなくても問題ないんですよ・・・。
あと雪以前に寒いと指が動かないんですよね、コントローラー操作しかり、キーボードタイピングしかり。
「早く雪降らないかなぁ~」なんていう冬ガチ勢みると正気を疑います。
まぁそんな文句を言いつつ暖房つけて金曜の夜10時から翌日昼12時までぶっ通しでゲームしてるあたりあまり外気温は関係ないんですけどね、むしろ夏の方が不快。結果どちらも不快。
英語を取得し、年中20℃くらいの国で暮らしたいと思ってます。嘘です。
1年中最高の気候で過ごしやすい都市ベスト7サンディエゴとかロスあたりが良いかもしれない。
そんなこんなで本題に入ります。
What is puppeteer
puppeteerに関しては既に当ブログで紹介されてますね。
PuppeteerでChromeを自動操作!javascriptでchromeを操作して、色々ごにょごにょできるNginxライブラリです。
余談ですが、puppeteer のスペル覚えにくくないですか? puppetterとかになってGoogleが毎度親切に教えてくれます。
ダイアログを操作したい
とあるサイトをpuppeteerで操作するにあたり、途中で確認ダイアログが表示されるのですが、突破方法がわからずググってみたところ普通に公式のドキュメントに書いてありました。
Puppetter Docsconst puppeteer = require('puppeteer');
puppeteer.launch().then(async browser => {
const page = await browser.newPage();
page.on('dialog', async dialog => {
dialog.accept(); // OK
});
});
page.onでdialogイベントを補足し、補足後のコールバックで渡されるオブジェクト(例のdialogオブジェクト)の acceptメソッドを実行することでダイアログに対しアクションを起こせます。
window.confirm() の場合はOKボタン、 window.prompt() の場合は、acceptメソッドに文字列を渡すとフォームに入力され送信されます。
もしダイアログをキャンセル、閉じたい場合は dismissメソッドを使いましょう。
これで操作中にダイアログが表示されても問題ないですね~。