为什么在Lambda上运行的Headless Chrome,Puppeteer在每个page.click()上都会显示错误,但是在本地可以正常运行?

时间:2018-11-01 13:33:34

标签: aws-lambda chromium puppeteer

我正在使用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元素。 我也可以提取click元素的innerText。我可以在本地单击它们。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

此问题已解决:

 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 中的错误,等待clicker.click()无法完成。您也可以随时检查他们的documentation