You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何指定Puppeteer启动时的显示器?双屏场景调整浏览器位置

让Puppeteer启动的浏览器在右侧显示器打开

嘿,这个困扰我也经历过!确实Puppeteer的官方API里没有直接指定启动显示器的参数,但我们可以通过Chrome本身的命令行启动参数来搞定这个问题——思路很简单:给Chrome指定窗口的起始位置和尺寸,让它直接在右侧显示器的区域打开。

具体步骤:

  1. 获取右侧显示器的坐标和尺寸
    首先你得知道右侧显示器的左上角坐标(x,y)以及它的宽高。不同系统可以用以下方式查询:

    • Windows:打开PowerShell,执行 Get-WmiObject -Class Win32_DesktopMonitor,查看每个显示器的ScreenWidth、ScreenHeight和MonitorLeft、MonitorTop
    • Mac:终端执行 system_profiler SPDisplaysDataType,找到右侧显示器的分辨率和位置信息
    • Linux:终端执行 xrandr --current,输出里会显示每个显示器的位置(比如1920x1080+1920+0,后面的+1920+0就是x和y坐标)
  2. 在Puppeteer中传入Chrome启动参数
    找到参数后,在puppeteer.launch()的args数组里添加--window-position和--window-size这两个参数,把你拿到的坐标和尺寸填进去就行。

代码示例:

const puppeteer = require('puppeteer');

(async () => {
  // 替换成你右侧显示器的实际坐标和尺寸
  const rightDisplayX = 1920; // 假设主显示器宽度是1920,右侧显示器x起始位置就是1920
  const rightDisplayY = 0;
  const rightDisplayWidth = 1920;
  const rightDisplayHeight = 1080;

  const browser = await puppeteer.launch({
    headless: false,
    args: [
      `--window-position=${rightDisplayX},${rightDisplayY}`,
      `--window-size=${rightDisplayWidth},${rightDisplayHeight}`,
      // 可选:如果想让窗口最大化,加上这个参数
      '--start-maximized'
    ]
  });

  const page = await browser.newPage();
  await page.goto('https://example.com');
})();

进阶:动态获取显示器信息

如果你不想硬编码坐标,可以用Node.js的第三方包来动态获取所有显示器的信息,比如screen包:

  1. 先安装依赖:npm install screen
  2. 然后修改代码:
const puppeteer = require('puppeteer');
const screen = require('screen');

(async () => {
  // 获取所有显示器信息,索引0通常是主显示器,1是右侧的(根据你的实际情况调整)
  const displays = screen.allDisplays();
  const rightDisplay = displays[1];
  
  const browser = await puppeteer.launch({
    headless: false,
    args: [
      `--window-position=${rightDisplay.bounds.x},${rightDisplay.bounds.y}`,
      `--window-size=${rightDisplay.size.width},${rightDisplay.size.height}`
    ]
  });

  const page = await browser.newPage();
  await page.goto('https://example.com');
})();

注意事项:

  • 如果之前Chrome有记住窗口位置的缓存,可能会覆盖你设置的参数,这时候可以加上--user-data-dir=./temp-profile指定一个临时用户目录,避免缓存影响
  • 有些系统的显示器坐标可能不是从0开始,一定要根据实际查询到的数值填写

试试这个方法,应该就能让浏览器直接在右侧显示器启动了!

内容的提问来源于stack exchange,提问作者Jake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 23:12:32