Selenium 2(webdriver):截图返回黑色图片

7

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

我的页面托管在Windows Server 2008 R2上。

使用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个回答

6
你的代码可能没有问题。但是,我使用的是Java,不能确定。
我在IE上遇到了同样的问题,而在FF和Chrome上却可以正常工作。
这篇文章表明,通过远程桌面连接启动Selenium服务器可能会导致问题。
其他一些帖子表明屏幕保护程序可能与此有关。
我尝试保持远程桌面连接打开,并解决了黑色截图的问题。同时,通过VNC登录也可以正常工作,这让我想到Windows在终止远程桌面连接后锁定了屏幕,而使用VNC时则未锁定屏幕。
这篇文章表明,在屏幕被锁定时禁用截图是Windows安全功能。

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),因为在您的情况下,此问题可能与应用程序池限制相关。无论如何,请告诉我进展如何。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接