將變數傳遞給Puppeteer 的Evaluate 函數
在Puppeteer 中,page.evaluate() 函數允許開發人員在瀏覽器上下文中,page.evaluate() 函數允許開發人員在瀏覽器上下文中執行JavaScript。但是,將變數傳遞到此函數可能會很棘手。
請考慮以下範例:
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(); } })();
在此範例中,變數 evalVar 在 page.evaluate() 函數中未定義。要解決此問題,必須將變數作為參數傳遞給page 函數:
const links = await page.evaluate((evalVar) => { console.log(evalVar); // 2. should be defined now ... }, evalVar); // 1. pass variable as an argument
透過遵循此方法,可以輕鬆地將變數傳遞到page.evaluate() 函數中,從而能夠執行瀏覽器上下文中更複雜的操作。
以上是如何正確地將變數傳遞給 Puppeteer 的 `page.evaluate()` 函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!