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!