Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无头镀铬启动器--窗口大小导致错误_Javascript_Node.js_Google Chrome_Google Chrome Devtools_Google Chrome Headless - Fatal编程技术网

Javascript 无头镀铬启动器--窗口大小导致错误

Javascript 无头镀铬启动器--窗口大小导致错误,javascript,node.js,google-chrome,google-chrome-devtools,google-chrome-headless,Javascript,Node.js,Google Chrome,Google Chrome Devtools,Google Chrome Headless,我需要能够采取截图给予一定的窗口大小。我在上读了这篇博文,在上读了这一页,但在init上无法确定如何调整窗口的大小 我已尝试在以下所有选项中传递--窗口大小,但均无效: --窗口大小=12801696 --窗口大小=1280x1696 --窗户尺寸12801696 --窗口大小1280x1696 最糟糕的是,做了一段时间后,我的截图变成了空白。无头浏览器中是否保留了某种内存导致了这种情况?我还没有尝试重新启动我的Mac电脑,这可能是下一步 那么,在给定窗口大小的情况下,如何获取整页屏幕截图呢?

我需要能够采取截图给予一定的窗口大小。我在上读了这篇博文,在上读了这一页,但在init上无法确定如何调整窗口的大小

我已尝试在以下所有选项中传递
--窗口大小
,但均无效:

--窗口大小=12801696
--窗口大小=1280x1696
--窗户尺寸12801696
--窗口大小1280x1696
最糟糕的是,做了一段时间后,我的截图变成了空白。无头浏览器中是否保留了某种内存导致了这种情况?我还没有尝试重新启动我的Mac电脑,这可能是下一步

那么,在给定窗口大小的情况下,如何获取整页屏幕截图呢?在phantom.js中,这是一件非常琐碎的事情

我的代码在下面

const chromeLauncher=require('chrome-launcher');
const CDP=require('chrome-remote-interface');
const file=require('fs');
(异步函数(){
异步函数启动chrome(){
返回等待chromeLauncher.launch({
镀铬层:[
“--窗口大小=12801696”,
“--禁用gpu”,
“无头”
]
});
}
const chrome=等待启动chrome();
const协议=等待CDP({
端口:chrome.port
});
常数{
多姆,
网络,,
页
仿真,,
运行时
}=协议;
等待Promise.all([Network.enable(),Page.enable(),Runtime.enable(),DOM.enable()]);
Page.navigate({
网址:'https://www.yahoo.com/'
});
Page.loadEventFired(异步()=>{
log('Start Page.loadEventFired');
const script1=“document.querySelector('p').textContent”
const result=await Runtime.evaluate({
表达式:script1
});
日志(result.result.value);
const ss=wait Page.capture屏幕截图({格式:'png',fromSurface:false});
file.writeFile('output.png',ss.data',base64',函数(err){
如果(错误){
控制台日志(err);
}
});
protocol.close();
chrome.kill();
});
})();
如果在命令行中执行此操作,则效果良好:

alias chrome canary=“/Applications/Google\chrome\canary.app/Contents/MacOS/Google\chrome\canary”
chrome canary--无头--禁用gpu--屏幕截图--窗口大小=3001696https://www.yahoo.com/
更新
我意识到无头铬金丝雀至少在Mac电脑上是非常不稳定的。如果我关闭终端并重新启动它,有时它会工作。但在运行了完全相同的脚本之后,它就永远挂断了(我一夜之间离开了)。我今天刚刚更新了所有内容(Chrome金丝雀、Chrome launcher、Chrome remote interface)并继续调试。也许现在还不是黄金时间。

好吧,我刚知道使用
——窗口大小
是行不通的。以下工作:

添加:

  Page.setDeviceMetricsOverride({
    'width': 735,
    'height': 2200,
    'deviceScaleFactor': 1,
    'mobile': false
  });
const script1 = "document.querySelector('p').textContent"
const result = await Runtime.evaluate({
  expression: script1
});
console.log(result.result.value);
移除(导致无头铬冻结):

  Page.setDeviceMetricsOverride({
    'width': 735,
    'height': 2200,
    'deviceScaleFactor': 1,
    'mobile': false
  });
const script1 = "document.querySelector('p').textContent"
const result = await Runtime.evaluate({
  expression: script1
});
console.log(result.result.value);

我遇到了与
“deviceScaleFactor”有关的暂停问题:0
,将其设置为
1
已解决。