將變數傳遞給Puppeteer 的Evaluate 函數
在Puppeteer 中,page.evaluate() 函數允許開發人員在瀏覽器上下文中,page.evaluate() 函數允許開發人員在瀏覽器上下文中執行JavaScript。但是,將變數傳遞到此函數可能會很棘手。
請考慮以下範例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 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);
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 {
}
})();
|
登入後複製
在此範例中,變數 evalVar 在 page.evaluate() 函數中未定義。要解決此問題,必須將變數作為參數傳遞給page 函數:
1 2 3 4 5 6 | const links = await page.evaluate((evalVar) => {
console.log(evalVar);
...
}, evalVar);
|
登入後複製
透過遵循此方法,可以輕鬆地將變數傳遞到page.evaluate() 函數中,從而能夠執行瀏覽器上下文中更複雜的操作。
以上是如何正確地將變數傳遞給 Puppeteer 的 `page.evaluate()` 函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!