【问题标题】:Selenium Chrome screenshot generates randomly whitespaceSelenium Chrome 屏幕截图随机生成空白
【发布时间】:2018-01-25 18:53:10
【问题描述】:

我使用 Selenium(Chrome 驱动程序)来生成页面的屏幕截图。但有时生成的屏幕截图在屏幕截图底部有空格。它随机发生。看起来渲染刚刚停止(见附件截图)。

我试过了

  • 已更新至最新版 Chrome (60.0.3112.101)
  • 已更新到最新版本的 Selenium.WebDriver (3.5.1)
  • 禁用“no-sandbox”和“headless”参数

代码

var chromeOptions = new ChromeOptions();
chromeOptions.AddArgument("--headless");
chromeOptions.AddArgument("--no-sandbox");

var driver = new ChromeDriver(Server.MapPath("bin"), chromeOptions, TimeSpan.FromMinutes(3));    
driver.Navigate().GoToUrl("someurl.com");
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(220);
driver.Manage().Window.Size = new Size(4000, 3000);

((ITakesScreenshot)driver).GetScreenshot().SaveAsFile("screenshote.png", ScreenshotImageFormat.Png);

driver.Close();
driver.Quit();

截图

这是一个渲染失败的背景图像的简单渲染。

更新

我无法提供指向该 url 的链接,但如果我使用 PhantomJS,相同的 url 永远不会渲染失败。

【问题讨论】:

  • IMO,它不会失败。你能给我们url 和预期的屏幕截图吗?
  • @DebanjanB 抱歉我不能,因为它在内部系统中运行。

标签: c# selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

有趣的是,我在使用外部 JAVA 库进行截图时遇到了同样的问题,但问题是我正在截取整页截图,所以滚动页面是必要的,然后截图被合并成一个带有空格的截图。与您的情况看起来不一样。

我看到你正在使用driver.Manage().Window.Size = new Size(4000, 3000); 也许您可以尝试将窗口全屏展开以查看差异?

我尝试搜索 C# 的外部屏幕截图框架,但找不到任何内容 :( 这里有一些帖子(例如12),如果此错误对您的测试至关重要,您可能需要检查它们是否包含替代屏幕截图解决方案。 祝你好运!

【讨论】:

  • 感谢您的评论@Mykola!我尝试了全屏方法而不是 Size=4000,3000,但它不起作用。这也很奇怪,这是随机发生的。看来我们必须回到 PhantomJS。