はじめに
本質的には解決していません。私が利用している範囲ではこれ十分だったので記事にしました。
解決策をご存じの方は是非コメントをお願いします。
問題
puppeteerを利用していてリンクをクリックした際にポップアップするタブがロードし終わるまで待ちたいのに待ってくれません。
スタックオーバーフローの質問 に対する2回答を参考に実装しても、前者はロードを待ってくれず、後者は移動先のセレクターを指定しなければいけません(これは使い回し辛い!)
解決方法
const [popup] = await Promise.all([
new Promise((resolve) => page.once('popup', resolve)),
page.click(selector)
]);
const popup_page = popup as Page;
await popup_page.reload({waitUntil: 'networkidle0'}); // waitUntilはそれぞれでご指定ください