我认为Chrome Headless是Chrome的全功能版本,可以运行任何Chrome桌面也可以运行的版本。但是,Chrome Headless似乎无法显示Google地图和Google地球的3D网页。
Google地图网址示例:
https://www.google.co.uk/maps/@51.6506889,-0.4041839,40a,35y,113.57h,73.36t/data=!3m1!1e3
Google地球:
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 earth,会显示错误消息:
Aw Snap!您的浏览器尚不支持新版Google地球。请改用Chrome中的此链接。如果您没有安装Chrome,请在此处下载。
有谁知道为什么会这样?是否需要在Chrome中启用某些功能才能正确呈现地图和地球?
答案 0 :(得分:0)
有两个问题。
由于您使用--disable-gpu
,因此WebGL无效。我可以通过删除此标记来启用3D Google地图,但由于Getting Started with Headless Chrome表示需要此标记,因此它可能无法在任何地方使用。
earth.google.com/web使用了pnacl,这似乎不受无头支持。
我能够通过省略--disable-gpu
来使3D Google地图工作,但是屏幕截图命令产生了一个尚未完成渲染的页面,所以我不得不使用远程调试器。