Почему Headless Chrome, Puppeteer, работающий на Lambda, выдает ошибку на каждом page.click (), но локально нормально? - PullRequest
0 голосов
/ 01 ноября 2018

Я использую лямбда-функцию, используя Puppeteer. Я хотел бы нажать на различные элементы 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 из элементов click. Я могу щелкнуть их локально.

Есть идеи?

1 Ответ

0 голосов
/ 06 ноября 2018

Это исправлено:

 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 () . Также вы всегда можете проверить их документацию .

...