Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Menghantar Pembolehubah dengan Betul ke Fungsi `page.evaluate()` Puppeteer?

Bagaimanakah Saya Boleh Menghantar Pembolehubah dengan Betul ke Fungsi `page.evaluate()` Puppeteer?

Patricia Arquette
Patricia Arquetteasal
2024-12-09 10:20:09640semak imbas

How Can I Properly Pass Variables to Puppeteer's `page.evaluate()` Function?

Melalukan Pembolehubah ke Fungsi Penilaian Puppeteer

Dalam Puppeteer, fungsi page.evaluate() membenarkan pembangun melaksanakan JavaScript dalam konteks penyemak imbas. Walau bagaimanapun, menghantar pembolehubah ke dalam fungsi ini boleh menjadi rumit.

Pertimbangkan contoh berikut:

const puppeteer = require('puppeteer');

(async() => {

  const browser = await puppeteer.launch({headless: false});
  const page = await browser.newPage();

  const evalVar = 'WHUT??';

  try {

    await page.goto('https://www.google.com.au');
    await page.waitForSelector('#fbar');
    const links = await page.evaluate((evalVar) => {

      console.log('evalVar:', evalVar); // appears undefined

      const urls = [];
      hrefs = document.querySelectorAll('#fbar #fsl a');
      hrefs.forEach(function(el) {
        urls.push(el.href);
      });
      return urls;
    })
    console.log('links:', links);

  } catch (err) {

    console.log('ERR:', err.message);

  } finally {

    // browser.close();

  }

})();

Dalam contoh ini, pembolehubah evalVar tidak ditentukan dalam fungsi page.evaluate(). Untuk menyelesaikan isu ini, pembolehubah mesti dihantar sebagai hujah kepada fungsi halaman:

const links = await page.evaluate((evalVar) => {

  console.log(evalVar); // 2. should be defined now
  ...

}, evalVar); // 1. pass variable as an argument

Dengan mengikut pendekatan ini, pembolehubah boleh dihantar dengan mudah ke dalam fungsi page.evaluate(), membolehkan pelaksanaan operasi yang lebih kompleks dalam konteks penyemak imbas.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghantar Pembolehubah dengan Betul ke Fungsi `page.evaluate()` Puppeteer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn