Javascript 无头镀铬启动器--窗口大小导致错误
我需要能够采取截图给予一定的窗口大小。我在上读了这篇博文,在上读了这一页,但在init上无法确定如何调整窗口的大小 我已尝试在以下所有选项中传递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电脑,这可能是下一步 那么,在给定窗口大小的情况下,如何获取整页屏幕截图呢?
--窗口大小,但均无效:
--窗口大小=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
已解决。