aws-lambda - 为什么 Headless Chrome,在 Lambda 上运行的 Puppeteer 在每个 page.click() 上都会出错,但在本地却很好?
问题描述
我正在使用 Puppeteer 运行 Lambda 函数。我想点击不同的 HTML 元素。当我在本地运行代码时,它可以正常工作并单击,但是当我在 Lambda 上运行它时,我得到:
错误:节点不可见或不是 HTMLElement
我已经设定 :
const browser = await puppeteerLambda.getBrowser({ headless: true, slowMo: 100, args: ['--no-sandbox', '--disable-setuid-sandbox', '--single-process', '--start-fullscreen', '--window-size=1413,749']});
await page.setViewport({ width: 1413, height: 749 });
let path = actions.path;
await page.waitFor(1000);
clicker = await page.$(path);
try {
await clicker.hover();
await clicker.click();
await page.waitFor(1500);
} catch (e) {
console.log('path click error', e);
await mailer.mailError(jobName, e);
}
我认为应该可以使用此视口查看 html 元素。我也可以提取点击元素的 innerText 。我可以在本地单击它们。
有任何想法吗?
解决方案
这修复了它:
clicker = await page.$(path);
try {
await page.evaluate((el) => {
return el.click()
}, clicker);
await page.waitFor(1500);
} catch (e) {
console.log('click error', e);
}
这可能是Puppeteer中无法完成的错误await clicker.click()。您也可以随时查看他们的文档。
推荐阅读
- r - 将 R 中的多个列与所有可能的组合值组合在一起
- java - 在另一个类中注入一个类对象而不在构造函数中添加它
- c# - 更改 .suo 内容 Visual Studio 17 的全局默认值
- django - Django request.user 重定向后成为 AnonymousUser
- reactjs - Reactjs 中的常见问题解答切换
- peoplesoft - 授权错误 - 联系您的安全管理员
- android - 导航期间的速度限制
- android - AAPT:错误:意外元素
在发现 - python - 如何制作自定义状态 discord.py
- reactjs - 教程 nextjs 多个应用程序