作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Puppeteer 在 SPA 网站上执行一系列操作,但在处理 Promise.all() 时遇到问题。我正在看Puppeteer docs并遵循该示例,但使用 waitForSelector
而不是 waitForNavigation
因为页面实际上并未更改。值得注意的是,下拉菜单是全屏的。
基本上我想在移动设备上用文字实现......
下面是执行上述步骤的相关代码摘录,但在第 5 步...当我知道该节点确实存在并且可见时,我收到“节点不可见或不是 HTMLElement”错误。有什么帮助吗?
const performSteps = async () => {
...
await page.goto('https://www.website.com'); // step 1
await page.click('.hamburger-icon'); // step 2
// Step 3
await Promise.all([
page.waitForSelector('menu-item'),
page.click('menu-item'),
]);
// Step 4
await Promise.all([
page.waitForSelector('sub-menu-item'),
page.click('sub-menu-item'),
]);
// Step 5 - results in ERR: Node is either not visible or not an HTMLElement
await Promise.all([
page.waitForSelector('sub-sub-menu-item'),
page.click('sub-sub-menu-item'),
]);
...
}
最佳答案
您在它出现并可见之前就点击了它。尝试:
await page.waitForSelector('sub-sub-menu-item', {visible: true})
await page.click('sub-sub-menu-item')
如果不清楚,Promise.all 中的 Promise 是同时运行的,在这种情况下你必须等待第一个完成。
关于javascript - 如何在 Puppeteer 中构造背对背 Promise.all 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61231869/
我是一名优秀的程序员,十分优秀!