puppeteerで任意のJavaScriptコードを実行する

evaluateメソッドを使うと、任意のJSコードを実行できます。

以下は、Googleのトップページを開いた後にalertを表示する例。

const puppeteer = require("puppeteer");
const main = async () => {
  const browser = await puppeteer.launch({ headless: false });
  const page = await browser.newPage();
  await page.goto("https://google.com", { waitUntil: "networkidle0" });
  await page.evaluate(() => {
    alert("アラートだよ");
  });
  await page.close();
  await browser.close();
};

main().catch((e) => {
  console.log("何らかのエラー💧");
  console.log(e);
});

 

 

サイトによっては以下のように

  • href属性:javascript:void(0)
  • onclick属性:JSのコード

という感じで書かれている場合があります。

href="javascript:void(0)"をクリックする

 

こういうとき、evaluateメソッドを使ってonclick属性の設定されている値を直接実行するようにしてやれば、わざわざ要素をクリックしなくてもページを遷移できるようになります。

先ほどの例でいうと

await page.evaluate(() => { 
  //ここにonclickの値をコピペする
});

という感じにします。

 

おわり

コメント

タイトルとURLをコピーしました