【发布时间】:2018-06-17 13:24:27
【问题描述】:
我的最终目标是能够自动截屏。为此,我一直在阅读此article,它说它应该在命令行中像这样简单:
chrome --headless --disable-gpu --screenshot https://www.chromestatus.com/
但是我在 当前目录 的任何地方都没有得到任何 screenshot.png 文件,在我的例子中是 C:\temp。我也尝试省略“headless”参数,但唯一发生的事情是 Chrome 打开网站但没有创建文件。
计划是这样一起使用铬和硒:
public void ScreenshotPage(string url)
{
ChromeOptions o = new ChromeOptions();
o.AddArgument("window-size=1920,1200");
o.AddArgument("disable-gpu");
o.AddArgument("disable-extensions");
o.AddArgument("headless");
o.AddArgument(url);
using (var driver = new ChromeDriver(o))
{
//driver.Navigate().GoToUrl(url); // if o.AddArgument(url) doesn't work then try this instead.
//Thread.Sleep(10000);
Screenshot screenshot = driver.GetScreenshot();
screenshot.SaveAsFile(@"C:\temp\test.png", ScreenshotImageFormat.Png);
}
}
结果是一个似乎具有正确分辨率的空白 png 文件。
我正在研究无头 Chrome 的一个原因是我的程序将在虚拟机中运行并且没有用户登录。这会给 ChromeDriver 的 GetScreenshot() 带来问题,因为它会使用非常低的分辨率用于截屏。我希望无头 Chrome 能解决这个问题。
网上似乎没有任何相关信息,保存Using headless Chrome as an automated screenshot tool (alternative to PhantomJS),作者已经明确表示他的目标是Chrome v60。我在使用 puppeteer 时有点犹豫,因为我正在用 .NET 编写,并且不确定当前端口是否是
环境:Google Chrome 63.0.3239.132 64 位、Windows 10(和 Server 2012)、Chromedriver 2.34
【问题讨论】:
-
我尝试使用上面的命令行(很好地替换了 url),也没有截图 - 表明信息已过时
标签: c# google-chrome screenshot selenium-chromedriver