javascript - 模板文字不适用于查询选择器
问题描述
我正在循环浏览一个下拉列表,并尝试选择单个选项。如果我尝试使用模板文字,则 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})`);
});
}
}
为什么会这样?
解决方案
链接:Puppeteer:在 .evaluate() 中传递变量
您必须传递另一个参数以page.evaluate
确保i
在范围内
const value = await self.page.evaluate((i) => {
return document.querySelector(`select option:nth-child(${i})`);
}, i);
推荐阅读
- python - 查询python函数-函数中有两个方括号
- c# - 为什么我不能反序列化对我的实体的响应?
- php - 使用 PHP 的多个页面的唯一访问者点击计数
- r - 检查哪些单元格(保存列表)包含某个值?
- sql - 使用模糊匹配量化唯一记录数
- ruby - Rspec - 是否可以存根哈希
- python - Strip() 的正则表达式版本:在正则表达式编译中直接使用函数参数
- c - 如何使用 Nix 在 macOS 上构建使用 time.h 的软件
- android - 如何根据对象的属性重新排列 Kotlin 中 ArrayList 的顺序?
- java - Firebase 上的 setPersistenceEnabled 和 keepSynced 有什么区别?