首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无头铬发射器-窗口大小导致错误

无头铬发射器-窗口大小导致错误
EN

Stack Overflow用户
提问于 2017-08-08 22:59:18
回答 1查看 1.6K关注 0票数 4

我需要在一定的窗口大小的情况下拍摄截图。我在如何在协同欺骗中运行无头铬上读到了这篇博客文章,在开始使用无头铬上读到了这一页,但我想不出如何调整init窗口的大小。

在下面的所有选项中,我都试图通过--window-size,但没有一个有效:

代码语言:javascript
复制
--window-size=1280,1696
--window-size=1280x1696
--window-size 1280,1696
--window-size 1280x1696

最糟糕的是,在做了一段时间之后,我的屏幕截图是空白的。在无头浏览器中是否保留了某种内存导致了这种情况?我还没有尝试重新启动我的Mac,这可能是下一个。

--那么,如果窗口大小为整页截图,有什么方法呢? In phantom.js,这是一件非常琐碎的事情。

我的代码在下面

代码语言:javascript
复制
const chromeLauncher = require('chrome-launcher');
const CDP = require('chrome-remote-interface');
const file = require('fs');

(async function() {
  async function launchChrome() {
    return await chromeLauncher.launch({
      chromeFlags: [
        '--window-size=1280,1696',
        '--disable-gpu',
        '--headless'
      ]
    });
  }
  const chrome = await launchChrome();
  const protocol = await CDP({
    port: chrome.port
  });

  const {
    DOM,
    Network,
    Page,
    Emulation,
    Runtime
  } = protocol;
  await Promise.all([Network.enable(), Page.enable(), Runtime.enable(), DOM.enable()]);

  Page.navigate({
    url: 'https://www.yahoo.com/'
  });

  Page.loadEventFired(async() => {

    console.log('Start Page.loadEventFired');
    const script1 = "document.querySelector('p').textContent"
    const result = await Runtime.evaluate({
      expression: script1
    });
    console.log(result.result.value);

    const ss = await Page.captureScreenshot({format: 'png', fromSurface: false});
    file.writeFile('output.png', ss.data, 'base64', function(err) {
      if (err) {
        console.log(err);
      }
    });

    protocol.close();
    chrome.kill(); 
  });

})();

如果我在命令行中这样做,它可以正常工作:

代码语言:javascript
复制
alias chrome-canary="/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary"

chrome-canary --headless --disable-gpu --screenshot --window-size=300,1696 https://www.yahoo.com/

更新

我意识到无头Chrome金丝雀在Mac电脑上是非常不稳定的。如果我关闭终点站,重新启动它,有时它就能工作了。但是,在运行完全相同的脚本之后,它就会永远挂起(我一夜之间就离开了)。我今天刚刚更新了所有的内容( Canary,chrome,chrome界面),并继续进行调试。也许现在还不是黄金时段。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-09 17:40:46

好的,我刚刚学会了使用--window-size是行不通的。以下是作品:

添加:

代码语言:javascript
复制
  Page.setDeviceMetricsOverride({
    'width': 735,
    'height': 2200,
    'deviceScaleFactor': 1,
    'mobile': false
  });

删除(导致无头铬冻结):

代码语言:javascript
复制
const script1 = "document.querySelector('p').textContent"
const result = await Runtime.evaluate({
  expression: script1
});
console.log(result.result.value);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45579242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档