无头为真时 Puppeteer 超时 30000ms

问题描述 投票:0回答:0

我正在远程运行一系列网络测试,在 Ubuntu 机器上使用 Screen,在 Puppeteer 浏览器实例上运行 Lighthouse。直到 2022 年 11 月我上次运行测试时,当前设置一直运行良好,但是当我几天前再次尝试时,它开始失败并出现以下错误;

TimeoutError: Timed out after 30000 ms while trying to connect to the browser! Only Chrome at revision r901912 is guaranteed to work.
    at Timeout.onTimeout (/home/jin/github/policy-driven-interventions/tools/web_crawler/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:208:20)
    at listOnTimeout (node:internal/timers:557:17)
    at processTimers (node:internal/timers:500:7

DEBUG="puppeteer:*" 显示浏览器从未启动。

我立即尝试使用相同配置的无头模式,效果很好。但我需要有头脑的测试,所以这对我来说不是一个选择。

显示器可能和电脑断开了(我不在机器旁边,暂时无法确认),我猜这可能与故障有关。然而,谷歌浏览器在同一个屏幕会话上没有任何问题地启动(这个屏幕会话是在连接显示器时在远程机器终端上启动的)。

在 Screen 会话之外,没有显示,测试失败并显示预期的不同错误消息(意味着不同的事情导致 Screen 会话失败;

Error: Failed to launch the browser process!
[13675:13675:0402/034541.040435:ERROR:ozone_platform_x11.cc(247)] Missing X server or $DISPLAY
[13675:13675:0402/034541.040531:ERROR:env.cc(226)] The platform failed to initialize.  Exiting.


TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md

    at onClose (/home/jin/github/policy-driven-interventions/tools/web_crawler/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:197:20)
    at ChildProcess.<anonymous> (/home/jin/github/policy-driven-interventions/tools/web_crawler/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:188:79)
    at ChildProcess.emit (node:events:402:35)
    at Process.ChildProcess._handle.onexit (node:internal/child_process:290:12)

机器的内存不会成为问题,因为自测试开始以来它一直没有改变,而且它的使用率很低(6%)。

我的测试在本地 Mac 上使用完全相同的代码在 headful Puppeteer 上运行良好,所以我想我的代码没问题,除非有任何与 Linux 系统特别相关的问题。

问题的根源是什么?任何人有任何见解?

简而言之,我怀疑以下内容;

  1. 显示器断开连接(Puppeteer 和 Google Chrome 以不同的方式检查“显示”)
  2. 与旧 Puppeteer (v.10.4.0) 和 Google Chrome (v.103.0.5060.134) 相关的任何 Ubuntu (18.04.6 LTS (GNU/Linux 4.15.0-197-generic x86_64)) 问题
  3. 还有什么??
google-chrome puppeteer xserver screensharing
© www.soinside.com 2019 - 2024. All rights reserved.