我正在尝试在我的 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/