[英]Puppeteer - Passing a variable to page.evaluate()
我正在嘗試使用 Puppeteer 在頁面上抓取一堆表格,但表格的數量每次都不同,因此我需要將一個變量傳遞給 page.evaluate() function。
我有一個包含我需要使用的變量的數組,但可以說我想使用變量手動檢查第二個表,這就是我最初解決問題的方式:
const x = 2
let value = await page.evaluate(() =>
document.querySelector("#pageBody > div:nth-child(" + x + ") > table > tr > td").innerText
);
console.log(value);
//Evaluation failed: ReferenceError: x is not defined
經過一些研究,據我了解,傳遞變量的正確方法是:
const x = 2;
let value = await page.evaluate((x) => {
document.querySelector("#pageBody > div:nth-child(" + x + ") > table > tr > td").innerText
}, x);
console.log(value);
//value = undefined
但是由於我沒有得到我想要的結果,所以我做錯了或沒有正確理解。 有任何想法嗎?
弄清楚了。 當然,在經過數小時的挫折后發布到 SO 5 分鍾后,但這里是:
const x = 2;
let value = await page.evaluate((x) => {
return Promise.resolve(document.querySelector("#pageBody > div:nth-child(" + x + ") > table > tr > td").innerText)
}, x);
console.log(value);
我只是添加這個來解決一些混亂,如果你用單行箭頭 function 你不需要返回:
const css = "#pageBody > div:nth-child(" + x + ") > table > tr > td"
let value = await page.evaluate((css) => document.querySelector(css).innerText), css);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.