我在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();
为什么我的文件是黑色的任何想法? 谢谢!
答案 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),因为在你的情况下这个问题可能与应用程序池限制有关。无论如何,请告诉我它是怎么回事。