node.js - Puppeteer 驱动的 headless chromium 在 Raspberry Pi 4 中立即关闭

标签 node.js raspberry-pi chromium puppeteer

我正在尝试在我的 raspberry pi 4(4gb RAM)上使用 puppeteer 自动提交一些表单,但遇到了一些奇怪的问题。我的完整脚本与 headless: false 完美配合,但是当我尝试在 headless 模式下运行脚本时,我开始遇到麻烦。

以下脚本有效:

const puppeteer = require('puppeteer-core');

(async() => {
  const browser = await puppeteer.launch({headless: true, executablePath: '/usr/bin/chromium-browser'});
  const page = await browser.newPage();
  await page.goto('https://accounts.google.com')
  var title = await page.title();
  console.log(title)
  browser.close()
})();

但是,如果我尝试运行稍微复杂的脚本(即打开页面后执行一些有用的操作), headless 浏览器似乎会关闭。例如,这个脚本失败:

const puppeteer = require('puppeteer-core');

(async() => {
  const browser = await puppeteer.launch({headless: true, executablePath: '/usr/bin/chromium-browser'});
  const page = await browser.newPage();
  await page.goto('https://accounts.google.com')
  await page.waitForSelector('input');
  await page.type('input', 'test@example.com')
  var title = await page.title();
  console.log(title)
  browser.close()
})();

我开始收到如下错误: UnhandledPromiseRejectionWarning:错误:协议(protocol)错误 (Runtime.callFunctionOn): session 已关闭。该页面很可能已关闭

  • NodeJS 版本:v10.16.3
  • NPM 版本:6.9.0
  • Chromium 浏览器版本:Chromium 74.0.3729.157 基于 Raspbian 构建,在 Raspbian 10 上运行
  • Puppeteer 版本:1.20.0

谢谢!

最佳答案

您可能过早关闭了浏览器。应该是

await browser.close()

关于node.js - Puppeteer 驱动的 headless chromium 在 Raspberry Pi 4 中立即关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58349841/

相关文章:

bash - 通过树莓派上的 Chrome 标签旋转?

node.js - 将 jasmine.spyOn 用于 Mongoose 模式方法

javascript - 火存储 : Query by item in array of document

mysql - pip install mariadb 的问题 - 找不到 mariadb_config

python - Raspberry Pi & Arduino 读取串行传感器数据

google-chrome - puppeteer/ headless Chrome 在阿尔卑斯字体问题

c++ - 当我编译 webrtc 服务器时,Windows 上仅支持 clang-cl

javascript - NodeJS 正则表达式 : how to access full list of results

Windows Azure 分页大型数据集解决方案

linux - 如何尽可能合理地复制远程 Linux 机器?