Puppeteer-将变量传递给page.evaluate()

我正在尝试使用Puppeteer在页面上刮一堆表,但是表的数量每次都不同,因此我需要将一个变量传递给page.evaluate()函数。

我有一个包含需要使用的变量的数组,但可以说我想使用一个变量手动检查第二张表,这是我最初解决问题的方式:

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

但是由于我无法获得我想要的结果,因此我在做错事或无法正确理解。有什么想法吗?

yxgwl 回答:Puppeteer-将变量传递给page.evaluate()

弄清楚了。当然,在经历了数小时的挫折之后,在发布到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);
,

我将添加此代码以解决一些混乱,如果您使用单行箭头功能执行此操作,则不需要返回:

search
本文链接:https://www.f2er.com/3156245.html

大家都在问