Selenium 2(webdriver):截取屏幕截图返回黑色图像

时间:2012-01-22 17:28:21

标签: c# asp.net internet-explorer screenshot selenium-webdriver

我在ASP.NET网站上使用Selenium 2(Webdriver)来构建服务,用户可以输入他们的URL并获取使用不同浏览器制作的页面截图。

我的页面是Windows Server 2008 R2上的hostet。

使用FirefoxDriver截取屏幕非常完美。 但是当我使用InternetExplorerDriver时,我只得到一个空的黑色文件。

应用程序以管理员身份运行 - 因此不存在权限问题。

我的代码:

// Opening the Browser
var ieCapabilities = DesiredCapabilities.InternetExplorer();
ieCapabilities.SetCapability(InternetExplorerDriver.IntroduceInstabilityByIgnoringProtectedModeSettings, true);
var browserIe = new InternetExplorerDriver(ieCapabilities);
browserIe.Navigate().GoToUrl("http://www.google.com");
// Screenshot
var dir = Server.MapPath("/screenshots/");
browserIe.GetScreenshot().SaveAsFile(dir + "Filename.png", ImageFormat.Png);
browserIe.Close();

为什么我的文件是黑色的任何想法? 谢谢!

2 个答案:

答案 0 :(得分:5)

您的代码可能没有任何问题。虽然,我正在使用Java,所以我无法确定。

我遇到了与IE相同的问题,而FF和Chrome工作正常。

post表明通过远程桌面连接启动Selenium Server可能会导致问题。

其他一些帖子表明屏幕保护程序可能与它有关。

我刚尝试打开远程桌面连接,它解决了黑屏问题。此外,通过VNC登录似乎也有效,这使我了解Windows在终止远程桌面连接后锁定屏幕的理论,同时在使用VNC时将其解锁。

post表示在屏幕锁定时禁用屏幕截图是Windows安全功能。

答案 1 :(得分:0)

    InternetExplorerDriver mydriver = new InternetExplorerDriver();
    mydriver.Navigate().GoToUrl("http://www.google.com/");
    Screenshot myScrennShot = ((ITakesScreenshot)iedriver).GetScreenshot();
    myScrennShot.SaveAsFile(@"C:\Path\123.png", ImageFormat.Png);
    //or
    byte[] data = myScrennShot.AsByteArray;

它适用于我,可能它也适用于你:-)如果它不起作用我建议你将此代码分离到不同的服务(WindowsService),因为在你的情况下这个问题可能与应用程序池限制有关。无论如何,请告诉我它是怎么回事。