模板文字不适用于查询选择器

Bil*_*aha 3 javascript dom web-scraping puppeteer

我正在循环浏览下拉列表,并尝试选择单个选项。如果我尝试使用模板文字,querySelector 将返回 null。

这里有两种不同的查询,一种带有模板文字,一种不带有模板文字。我正在使用反引号,一切都相同,但第一个查询返回 null,而第二个查询返回正确的值,即使在这种情况下“i”= 2。

const value = await self.page.evaluate(() => {
              return document.querySelector(`select option:nth-child(${i})`);
});

const value1 = await self.page.evaluate(() => {
              return document.querySelector(`select option:nth-child(2)`);           
});

// Structure
for (let i = 2; i < options.length; i++){

    if (options[i]....){
        const value = await self.page.evaluate((i) => {
             return document.querySelector(`select option:nth-child(${i})`);
            });

    }
}
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?

kal*_*ave 5

链接:Puppeteer:在 .evaluate() 中传递变量

您必须传递另一个参数以page.evaluate确保i在范围内

const value = await self.page.evaluate((i) => {
    return document.querySelector(`select option:nth-child(${i})`);
}, i);
Run Code Online (Sandbox Code Playgroud)