C# Can';t使用Chrome在命令行中截图

C# Can';t使用Chrome在命令行中截图,c#,google-chrome,screenshot,selenium-chromedriver,C#,Google Chrome,Screenshot,Selenium Chromedriver,我的最终目标是能够自动截图。为此,我一直在阅读这篇文章,它说它应该像命令行中的这样简单: chrome --headless --disable-gpu --screenshot https://www.chromestatus.com/ 但是我在当前目录中没有任何screenshot.png文件,我的例子是C:\temp。我也试着省略“headless”参数,但唯一发生的事情是Chrome打开了网站,但没有创建任何文件 计划将铬和硒结合使用,如下所示: public void Screens

我的最终目标是能够自动截图。为此,我一直在阅读这篇文章,它说它应该像命令行中的这样简单:

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文件,它似乎具有正确的分辨率

我研究headless Chrome的一个原因是,我的程序将在虚拟机中运行,并且没有用户登录。这给ChromeDriver的GetScreenshot()带来了一个问题,因为它将使用非常低的分辨率拍摄屏幕截图。我希望无头铬合金能解决这个问题

在互联网上似乎没有任何相关信息,除了作者明确表示他的目标是ChromeV60之外。我对使用Puppeter有点犹豫,因为我是在.NET中编写的,不太确定当前端口是否可用

环境:谷歌Chrome 63.0.3239.132 64位,Windows 10(和服务器2012),Chromedriver 2.34试试这个

using (var driver = new ChromeDriver(o))
{
    Screenshot ss = ((ITakesScreenshot)driver).GetScreenshot();
    ss.SaveAsFile(@"C:\temp\test.png", ScreenshotImageFormat.Png);
}

我尝试使用上面的命令行(很好地替换了url),但也没有得到任何屏幕截图——这表明信息已过时。谢谢,但上面的代码只在非headless模式下工作,即没有--headless参数。