javascript - 如何在 forEach 循环中使用 Puppeteer 的 page.click?
问题描述
我想让Puppeteer根据名为的数组中的项目数单击一些选项卡tabs
:
;(async () => {
const browser = await puppeteer.launch({
headless: true
})
const page = await browser.newPage()
await page.goto(`https://www.example.com`)
const tabs = ['tab1', 'tab2', 'tab3']
tabs.forEach((tab, index) => {
await page.click(`.postab-container li:nth-of-type(${ index + 1 }) a`)
})
})()
但我得到这个错误:
await page.click(`.postab-container li:nth-of-type(${ index + 1 }) a`) ^^^^ SyntaxError: Unexpected identifier
好像forEach
声明搞砸了page
。
这样做的正确方法是什么?
解决方案
forEach 内部的函数不是async
函数,因此您不能使用await
,但即使将其更改为async
函数,您也不会得到预期的结果(forEach 将一次生成所有请求,而不是await
each async function
)。请改用 for 循环。
for(let index =0;index<tabs.length;++index){
let tab = tabs[index];
await page.click(`.postab-container li:nth-of-type(${ index + 1 }) a`)
}
推荐阅读
- reactjs - 自定义 MultiValueRemove 道具在反应选择中不起作用
- jenkins - 需要 Jenkins Github Webhook 投票日志中的 githash
- javascript - 如何在反应中添加指向字符串的链接
- algorithm - 在视频卡上进行体素渲染的算法
- oracle - 如何比较oracle中不同格式的日期?
- c - 预期的表达式和未声明的标识符错误
- ssh - 通过用于 jupyter notebook 的第三个静态 ip pc 在两个动态 ip pc 之间建立 SSH 桥接
- database - Apache IoTDB 支持多少个客户端 SDK 或协议?
- numpy - 如何在 cmd 窗口升级 numpy 1.21 版本?
- python - 在 Azure Databricks 中安装 Janitor 库