【问题标题】:Can't take screenshot in command line with Chrome无法使用 Chrome 在命令行中截屏
【发布时间】: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


【解决方案1】:

试试这个

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

【讨论】:

  • 谢谢,但上面的代码只能在非无头模式下工作,即。没有 --headless 参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 2013-04-27
  • 1970-01-01
  • 2020-01-25
  • 2017-12-15
  • 2017-12-25
相关资源
最近更新 更多