首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当在本地机器上通过cron运行时,Puppeteer headful无法启动浏览器,显示"Unable to open X display“

当在本地机器上通过cron运行时,Puppeteer headful无法启动浏览器,显示"Unable to open X display"的原因是因为cron作业是在后台运行的,没有可视化界面,而Puppeteer headful需要一个可视化界面来启动浏览器。

解决这个问题的方法是使用无头模式(headless mode)来运行Puppeteer,无头模式不需要可视化界面,可以在后台运行。可以通过设置Puppeteer的启动参数来实现无头模式,具体的参数是headless: true

以下是一个示例代码,展示如何在无头模式下运行Puppeteer:

代码语言:txt
复制
const puppeteer = require('puppeteer');

async function runPuppeteer() {
  const browser = await puppeteer.launch({ headless: true });
  const page = await browser.newPage();
  // 在这里执行你的操作
  await browser.close();
}

runPuppeteer();

在上述代码中,headless: true将Puppeteer设置为无头模式,然后可以在runPuppeteer函数中执行你需要的操作。

无头模式适用于不需要可视化界面的场景,例如网页截图、自动化测试、爬虫等。如果需要可视化界面,可以考虑在有图形界面的环境下运行,或者使用其他工具来模拟图形界面。

腾讯云提供了云服务器(CVM)产品,可以满足云计算的需求。您可以通过以下链接了解腾讯云云服务器的相关信息:腾讯云云服务器

请注意,本回答仅提供了一种解决方案,具体的实施方法可能因环境和需求而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

在 Linux 服务器中创建假桌面运行模拟浏览器有头模式

摄影:产品经理 寿喜锅的一角 经常使用 Selenium 或者 Puppeteer 的同学都知道,他们启动的 Chrome 浏览器分为有头模式和无头模式。...通过他我们可以发现,在不做任何设置的情况下,Selenium 或者 Puppeteer 启动浏览器有几十个特征能够被目标网站识别为爬虫。并且,无头模式的特征比有头模式的特征多得多。...这个东西在维基百科上面的介绍[1]如下: Xvfb or X virtual framebuffer is a display server implementing the X11 display server...Xvfb 在一个没有图像设备的机器实现了 X11显示服务的协议。它实现了其他图形界面都有的各种接口,但并没有真正的图形界面。...当然,我们也可以调整一下窗口大小,增加参数:xvfb-run python3 test.py -s -screen 0 1920x1080x16就能假装在一个分辨率为1920x1280的显示运行程序了

3.7K11
  • 如何将开发流程工具化,躺着把代码写了

    它提供了这些api Puppeteer通过DevTools协议与浏览器通信,创建Browser实例。 Browser:浏览器实例,可以拥有多个BrowserContext。...输入 url,点击登录,就是通过 puppeteer启动一个浏览器,并且自动跳转到登录页面,输入用户名密码,之后点击登录,跳转到输入的 url。...' ] }) 启动浏览器的时候通过 headless 设置为 false,puppeteer 支持启动没有界面的浏览器,主要是用于自动化测试,但我们这里需要界面。...然后通过 executablePath 指定一个本地的 chrome 的启动路径,可以在设置里面修改(一般 chrome 的路径是固定的),这样使用本地的 chrome 来跑,不用连 chrome 一起打包进去...electron 提供的 node 环境中 node 版本和本地的 node 版本要分开,运行时如果报版本不兼容,你再怎么更新本地 node 版本也没用,要去更新 electron 版本,electon

    99420

    Puppeteer Sharp: 使用C#和Headless Chrome爬网页

    Puppeteer API 的便利性是能够使用浏览器的无头特性,而不需要把浏览器显示出来,以此提高性能。 Why use Puppeteer Sharp?...image.png 首先我们需要下载Chrome浏览器本地。这是Puppeteer Sharp将使用与网站交互的浏览器。 幸运的是,我们可以使用 C# 下载默认修订版或开发人员指定的修订版。...image.png 加载网页 现在,您已将浏览器下载到本地计算机,您可以开始加载网页并检索 JavaScript 呈现的 HTML。...image.png 在无头浏览器中成功加载网页后,让我们通过搜索本地旅游景点与网页进行交互: // Search for a local tourist attraction on Bing Maps...image.png 连接到远程浏览器 Puppeteer Sharp的最后一个功能,是连接到远程浏览器的能力。如果您的服务器无法安装浏览器(比如Linux),则此功能可能很有用。

    5.9K20

    基于puppeteer模拟登录抓取页面

    第二种方式,直接抓取网站页面到本地服务器,然后浏览的是本机服务器抓取的页面,这种情况下页面已经过来了,我们就可以为所欲为了,首先我们绕过了X-FRAME-OPTIONS 为sameorgin的问题,...这种抓取方式本身就会有问题问题,首先,直接请求的是用户服务器,用户服务器对非浏览器的agent 应该会有很多限制,需要绕过处理;其次,请求返回的是原始内容,需要在浏览器通过js渲染的部分无法获取(当然...针对这种情况,如果基于puppeteer来做,流程就变成了 puppeteer启动浏览器打开用户网站-->页面渲染-->返回渲染后结果,简单的用伪代码实现如下: const puppeteer = require...puppeteer启动浏览器打开请求页面-->点击登录按钮-->输入用户名和密码登录 -->重新加载页面 基本代码如下图: const puppeteer = require("puppeteer");...补充(还昨天的债):基于puppeteer虽然可以很友好的抓取页面内容,但是也存在这很多的局限 抓取的内容为渲染后的原始html,即资源路径(css、image、javascript)等都是相对路径,保存到本地无法正常显示

    6.2K100

    macOS 使用 XQuartz 支持 X11 实现 Linux 图形化界面显示

    X11 介绍 有些 Linux 服务器出于性能和效率的考虑,通常都是没有安装图形化界面的,那么图形化程序在服务器压根儿就跑不起来,或者无法直接显示出来,这就很尴尬了!那么如何解决这个问题呢?...许多时候 X server 和 X client 在同一台主机上,这看起来没什么。但是, X server 和 X client 完全可以运行在不同的机器,只要彼此通过 X 协议通信即可。...于是,我们就可以做一些 “神奇” 的事情,比如像本文开头谈到的,在本地显示 (X server),运行在服务器的 GUI 程序 (X client)。...2. macOS 实现 X11 图形化界面显示 # macOS 安装 xquartz brew cask install xquartz # 启动 xquartz,实测 `Allow connections...to open connection to "session" message bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for

    6K21

    在Ubuntu 16.04安装VNC

    VNC服务器传输键盘和鼠标事件,并通过网络连接显示远程主机的屏幕,从而允许您在Linode服务器运行完整的桌面环境。...为了保护您密码和数据的安全,您需要借助SSH隧道将流量传输至本地端口。可以使用相同的本地端口来保持一致性。 Mac OS X和Linux 1.在您的桌面环境下,通过以下命令连接至Linode。...点击 Save 保存设置以供将来使用,之后点击 Open 初始化SSH隧道。 3.启动VNC服务器并测试连接。...查看器是绘制VNC服务器生成的图形界面并在本地计算机输出显示的软件。 Mac OS X和Windows 在OS X和Windows上有很多查看器的选择,本指南将使用RealVNC Viewer。...1.安装并打开VNC Viewer后,通过VNC客户端连接至本地主机。

    6.1K30

    Memlab,一款分析 JavaScript 堆并查找浏览器和 Node.js 中内存泄漏的开源框架

    它支持定义一个测试场景(使用 Puppeteer API),教 Memlab 如何与您的单页应用程序(SPA)交互,Memlab 可以自动处理其余的内存泄漏检查: 与浏览器交互并获取 JavaScript...克隆仓库 要在本地机器运行 demo,请克隆 memlab github 存储库: https://github.com/facebookincubator/memlab git clone git@...让我们通过浏览器访问 http://localhost:3000 来确保它正在运行: 这里测试的是 Example 1。...让我们从上到下分解结果: 第 1 部分:浏览器交互面包屑显示了按照我们的场景文件中指定的方式执行的浏览器交互(导航)memlab。...通过从原生 Window(即 GC 根)向下逐个跟踪泄漏跟踪,您将能够找到应该设置为 null 的引用(但这不是由于bug 引起的)。

    3.7K20

    Puppeteer:从零出发,全面掌握浏览器自动化神器

    ; 不提供任何默认选项; npm i puppeteer # 完整版 npm i puppeteer-core # 核心库,需要显示指定远程/本地浏览器的连接地址 入门示例: 先快速初始化一个示例项目:...(x64)、MacOS(x64/arm64)、Debian/Ubuntu Linux(x64); 核心概念 Puppeteer 拥有 4 个核心概念,分别是: 核心概念 描述 浏览器管理 Puppeteer...基础配置: 因为调试往往发生在开发环境中,所以提供一个环境变量来动态启动调试的基础配置还是有很帮助的: 禁用无头模式:可以查看浏览器显示的内容,主观的观察内容变化; 延长执行时间:通过延长执行时间来观察正在发生的情况...; 启用浏览器调试:调试时会自动启动开发者工具; 打印浏览器日志:启用后可以接管浏览器意外崩溃或无法正常启动时的日志信息。...文档显示目前尚无法测试扩展程序的内容脚本。

    85211

    老Kindle秒变电子日历,提醒你穿衣收快递,敲几句命令行就行

    但仍有三个问题要解决: Kindle会自动进入睡眠状态并显示屏保程序; 如果想更新屏幕数据,每次浏览器页面都会重新加载,观感很差; Kindle浏览器还有一些难看又冗余的元素,比如标题、URL栏,且并不好看...复制.bin文件进去就行,接着通过Settings设置->更新Kindle,完成安装。 断开Kindle与电脑的连接,通过设备键盘,输入;debugOn 回车,启动调试模式。...完成后,输入control-O,再输入control-X,保存并退出编辑器。 然后运行脚本测试一下,输入/script.sh,就能看见屏幕能看见图像显示。.../cron restart BINGO!...当程序启动后,Kindle将会以文学名著段落显示当前时间,此外,还能猜测该句来自哪本书。按下翻书按钮,屏幕就会显示答案,深得女票喜爱。 最后问问, 你觉得Kindle还能用来干什么?

    92640

    phantomJs之殇,chrome-headless之生 | 洞见

    技术雷达快讯:自2017年中以来,Chrome用户可以选择以headless模式运行浏览器。此功能非常适合运行前端浏览器测试,而无需在屏幕显示操作过程。...Headless Chrome浏览器的测试运行速度要快得多,而且行为更像一个真正的浏览器,虽然我们的团队发现它比PhantomJS使用更多的内存。...可以在无界面的服务器或CI运行测试,减少了外界的干扰,使自动化测试更稳定。 在一台机器可以模拟运行多个无头浏览器,方便进行并发测试。 headless browser有什么缺陷?...前端测试改进 以目前的项目来说,之前的前端单元测试以及组件测试是用karma在phantomjs运行的,非常不稳定,在远端CI运行时经常会莫名其妙的挂掉,也找不出来具体的原因,自从Headless Chrome...必须使用Xvfb帮助才能在无界面的Linux 运行UI自动化测试。(Xvfb是一个实现了X11显示服务协议的显示服务器。

    1.7K60

    Playwright 简明入门教程:录制自动化测试用例,结合 Docker 使用

    show trace viewer help [command] display help for command 到现在为止,我们距离完成本地环境的安装还差一步...下载需要的浏览器环境 浏览器环境的下载需要使用 playwright install 命令,目前支持通过命令下载下面的浏览器:chromium、chrome、chrome-beta、msedge、msedge-beta...如果浏览器的解码器正常的话,我们将能够顺利得到播放的视频画面。这里因为默认启动浏览器环境中,缺少一些解码器,所以无法进行播放。...图片 如果你在本地或者云服务器安装了 Docker,那么可以通过下面的命令,快速启动一个包含了 Chrome 的容器实例,用于测试验证测试程序是否正常: docker run --rm -it -p 3000...browser = await chromium.launch({ headless: false }); 将其替换为调用 CDP 协议启动 Docker 中的浏览器( localhost 这个地址需要调整为你启动服务的可访问地址

    3K70

    在 SCF 中运行 Puppeteer

    Puppeteer 是一个 Node.js 库, 提供了一组封装良好的接口, 使你可以通过 DevTools 协议控制 Chrome. 本文介绍如何在 SCF 中使用 Puppeteer....至此, 我们期望这个函数可以在 SCF 正确运行....我们按照提示来修复这个错误, 添加启动参数: const browser = await puppeteer.launch({args: ['--no-sandbox']}); 第二次运行 这一次, 你会遇到不一样的错误..., 你知道这是运行环境里缺少了必要的动态链接库, 你也发现机器没有这个动态链接库, 搜索发现, 可以这样解决 $ yum install libXScrnSaver 安装完后, 你把 libXss.so...API 网关 看看效果, 没有如你所愿, 截图上的文本没有被正确显示, 但是聪明的你一定想到了, 这是字体的问题.

    6.6K83

    用 PhantomJS 让邮件报表图文并茂(二)完善篇

    字体渲染问题 当你在本地完成上述邮件测试 DEMO,部署到 linux 服务器后,可能会发现,图表里的文字全都失踪了。...而 linux 服务器没有这个字体文件,就导致 canvas 内文字无法正常渲染了。 解决办法也不复杂,在服务器添加相应字体就好。...高分屏适配 将图表截图,发送邮件到手机上查看后,可能会发现图表的截图在高分屏显示效果很不理想。 这个问题在 Mac 电脑和手机端的屏幕,看起来会相当明显。 那么如何截取更清晰的图片素材呢?...这个参数相当于浏览器内,通过 Ctrl + 鼠标滚轮 操作将页面放大为 200% 的视图,确保截图能截出两倍的尺寸大小。...通过网上搜索这个话题,发现一个很好的替代方案——谷歌推出的 Puppeteer。 可以在 node.js 环境下很方便的调用 Headless 也就是无 UI 的 Chrome。

    78310

    JMeter扩展Java请求实现WebRTC本地音视频推流压测脚本

    无头浏览器 正常情况是打开浏览器,打开摄像头和麦克风输入音视频流进行请求传输,测试模拟采用无头浏览器,读取本地文件作为音视频输入。...无头浏览器是指没有界面的浏览器通过调用浏览器API来模拟操作,比如Chrome在启动时添加--headless,就可以进入无头模式。...为了让JMeter能并发调用,需要编写Java代码调用Puppeteer,听着有点想象力,实际已经有封装好的开源库了:jvppeteer。...setupTest()和teardownTest()在运行时每个线程只会执行一次。 无头浏览器核心参数配置如下: ? Java代码写好后,需要打成jar包提供给JMeter调用。...小结 本文介绍了如何使用Java对Puppeteer封装的jvppeteer,实现对WebRTC进行本地音视频流的压测脚本,打包成jar包后,可以在JMeter中进行扩展,通过Java请求Sampler

    2.3K30

    web自动化测试-puppeteer入门与实践

    例如,你想在一个网页运行一些测试,从网页创建一个PDF,或者只是检查浏览器怎样递交URL。...: Puppeteer因为是一个npm的包,所以安装很简单,你可以通过npm或者yarn的方式去安装: npm i puppeteer/yarn add puppeteer 三、使用与例子 本篇内容主要介绍启动实例以及...debug相关 Class:Puppeteer Puppeteer 模块提供了一种启动 Chromium 实例的方法。...1.下面就是使用 Puppeteer 进行自动化的一个典型示例: 上述代码通过puppeteer.launch方法生成了一个browser的实例,此时在默认情况下是headless模式,对应于浏览器,...launch中配置headless为false关掉无界面模式,查看浏览器显示的内容这是一种调试方式,同是通过添加slowMo的方式也是为调试提供了方便。

    1.5K30
    领券