2012-01-22 16 views
6

Sto utilizzando Selenium 2 (Webdriver), in un sito Web ASP.NET per creare un servizio, in cui gli utenti possono inserire il proprio URL e ottenere schermate della pagina, creato con diversi browser.Selenium 2 (webdriver): la cattura di uno screenshot restituisce un'immagine nera

La mia pagina è hostet su Windows Server 2008 R2.

Acquisire schermate con FirefoxDriver funziona perfettamente. Ma quando sto usando InternetExplorerDriver, ottengo solo un file nero vuoto.

L'app è in esecuzione come amministratore, quindi non ci dovrebbero essere problemi di autorizzazione.

My Code:

// 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(); 

Tutte le idee perché il mio file è nero? GRAZIE!

risposta

5

Probabilmente non c'è niente di sbagliato nel codice. Anche se sto usando Java, quindi non posso dirlo con certezza.

Ho avuto lo stesso problema con IE mentre FF e Chrome hanno funzionato bene.

Questo post suggerisce che l'avvio del Selenium Server tramite una connessione desktop remota potrebbe causare problemi.

Alcuni altri post suggeriscono che lo screen saver potrebbe avere qualcosa a che fare con esso.

Ho appena provato a lasciare aperta la connessione desktop remoto e ho risolto il problema dello screenshot nero. Anche l'accesso tramite VNC sembra funzionare, portandomi alla teoria che Windows blocchi lo schermo dopo aver terminato la connessione desktop remoto lasciandolo sbloccato se si utilizza VNC.

Questo post suggerisce che la disattivazione di schermate quando lo schermo è bloccato è una funzione di sicurezza di 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; 

Funziona per me, probabilmente funziona anche per voi :-) Se non funziona ti suggerisco di separare il codice di servizio diverso (servizio di windows), perché in voi caso questo problema forse connesso con restrizioni del pool di applicazioni. Comunque, per favore fammi sapere come va.

Problemi correlati