2012-01-22 217 views
6

我使用Selenium 2(Webdriver),在ASP.NET網站中構建一個服務,用戶可以在其中輸入URL並獲取頁面截圖,製作與不同的瀏覽器。Selenium 2(webdriver):截圖截圖返回黑色圖像

我的頁面是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(); 

任何想法,爲什麼我的文件是黑色的? 感謝!

回答

5

你的代碼可能沒有問題。雖然,我正在使用Java,所以我無法確定。

我有與IE瀏覽器相同的問題,而FF和Chrome工作正常。

這個post建議通過遠程桌面連接啓動Selenium服務器可能會導致問題。

其他一些帖子提示屏幕保護程序可能與它有關。

我只是試圖離開遠程桌面連接打開,它解決了黑色的屏幕截圖問題。也通過VNC登錄似乎工作,導致我的理論是Windows在終止遠程桌面連接後鎖定屏幕,而如果使用VNC則使其解鎖。

這個post建議屏幕鎖定時禁用屏幕截圖是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)應用程序池限制。無論如何,請讓我知道它是怎麼回事。