1

我的印象是 Chrome Headless 是一个功能齐全的 Chrome 版本,它可以运行任何 Chrome 桌面也可以运行的东西。但是,Chrome Headless 似乎无法显示来自 Google 地图和 Google 地球的 3D 页面。

谷歌地图网址示例:

https://www.google.co.uk/maps/@51.6506889,-0.4041839,40a,35y,113.57h,73.36t/data=!3m1!1e3

谷歌地球:

https://earth.google.com/web/@51.6499525,-0.40162489,64.98644774a,251.31324967d,35y,111.968

这是来自终端的示例:

chrome --headless --disable-gpu --screenshot https://earth.google.com/web/@51.6499525,-0.40162489,64.98644774a,251.31324967d,35y,111.96869586h,49.99995375t,0r

还有一个使用 puppeteer 的例子

const puppeteer = require('puppeteer');

async function run() {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    await page.setViewport({width:2880, height:1800});
    await page.goto('https://www.google.co.uk/maps/@51.5516152,0.7010375,66a,35y,170.86h,79.21t/data=!3m1!1e3', {"waitUntil" : "networkidle"});
    await page.screenshot({ path: './example-2d.png' });

    browser.close();
}

run();

预期的结果是什么?

我希望结果的呈现方式与桌面版 Chrome 浏览器中的呈现方式相同。

相反会发生什么?

对于谷歌地图链接,它以 2D 而不是 3D 呈现。

对于谷歌地球,会给出一条错误消息:

哦,快!您的浏览器尚不支持新版 Google 地球。请在 Chrome 中尝试此链接。如果您没有安装 Chrome,请在此处下载。

有谁知道为什么会这样?是否需要在 Chrome 中启用某些功能才能正确渲染地图和地球?

4

1 回答 1

0

有两个问题。

  1. 由于您使用的是--disable-gpu,WebGL 将无法正常工作。我可以通过删除这个标志来让 3D Google Maps 工作,但由于Headless Chrome 入门说需要这个标志,它可能无法在任何地方工作。

  2. earth.google.com/web 使用,在 headless 下似乎不支持。

通过省略 ,我能够使 3D Google Maps 工作--disable-gpu,但屏幕截图命令生成的页面尚未完成渲染,因此我不得不使用远程调试器。

于 2017-09-22T14:20:24.240 回答