首页 > 解决方案 > Puppeteer 键入触发 aws lambda 中的错误

问题描述

我正在创建一个在 AWS Lambda 函数上运行的抓取,但是当我在站点上键入查询时,它会触发一个错误,我无法在我的本地环境中重现该错误。有谁知道会是什么?

代码:

query: async (name, birthDate, cpf) => {
    logger.info('QUERY_PARAMS_AP', '', [name, birthDate, cpf]);
    try {
      await page.waitFor(5000);

      await page.type('input[id="formNome"]', name);
      await page.type('input[id="formDataDeNascimento"]', birthDate);
      await page.type('input[id="formCpf"]', cpf);
      ...

该错误是在 page.type 方法中触发的。

触发错误如下:

{ Error: Protocol error (Input.dispatchKeyEvent): Target closed.
       at Promise (/var/task/node_modules/puppeteer-core/lib/Connection.js:183:56)
       at new Promise (<anonymous>)
       at CDPSession.send (/var/task/node_modules/puppeteer-core/lib/Connection.js:182:12)
       at Keyboard.up (/var/task/node_modules/puppeteer-core/lib/Input.js:137:24)
       at Keyboard.<anonymous> (/var/task/node_modules/puppeteer-core/lib/helper.js:112:23)
       at Keyboard.press (/var/task/node_modules/puppeteer-core/lib/Input.js:180:16)
     -- ASYNC --
       at Keyboard.<anonymous> (/var/task/node_modules/puppeteer-core/lib/helper.js:111:15)
       at Keyboard.type (/var/task/node_modules/puppeteer-core/lib/Input.js:162:20)
     -- ASYNC --
       at Keyboard.<anonymous> (/var/task/node_modules/puppeteer-core/lib/helper.js:111:15)
       at ElementHandle.type (/var/task/node_modules/puppeteer-core/lib/JSHandle.js:363:31)
     -- ASYNC --
       at ElementHandle.<anonymous> (/var/task/node_modules/puppeteer-core/lib/helper.js:111:15)
       at DOMWorld.type (/var/task/node_modules/puppeteer-core/lib/DOMWorld.js:422:18)
     -- ASYNC --
       at Frame.<anonymous> (/var/task/node_modules/puppeteer-core/lib/helper.js:111:15)
       at Page.type (/var/task/node_modules/puppeteer-core/lib/Page.js:1103:29)
       at Object.query (/var/task/sources/AP/scraping.js:102:18)
     message: 'Protocol error (Input.dispatchKeyEvent): Target closed.' } }

标签: javascriptaws-lambdapuppeteer

解决方案


推荐阅读