2012-01-22 30 views
6

Estoy usando Selenium 2 (Webdriver), en un sitio web ASP.NET para crear un servicio, donde los usuarios pueden ingresar su URL y obtener capturas de pantalla de la página. con diferentes navegadoresSelenium 2 (webdriver): Tomar una captura de pantalla devuelve una imagen negra

Mi página está alojada en un Windows Server 2008 R2.

Tomando capturas de pantalla con FirefoxDriver funciona perfecto. Pero cuando estoy usando InternetExplorerDriver, acabo de obtener un archivo negro vacío.

La aplicación se ejecuta como administrador, por lo que no debe haber problemas de permisos.

Mi Código:

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

Cualquier idea por qué mi archivo es negro? ¡GRACIAS!

Respuesta

5

Probablemente no haya nada de malo en su código. Aunque estoy usando Java, no puedo asegurarlo.

Tuve el mismo problema con IE mientras que FF y Chrome funcionaban bien.

Este post sugiere que iniciar Selenium Server a través de una conexión de escritorio remota podría ocasionar problemas.

Algunas otras publicaciones sugieren que el protector de pantalla podría tener algo que ver con eso.

Intenté dejar abierta la conexión del escritorio remoto y resolvió el problema de la captura de pantalla negra. También el inicio de sesión a través de VNC parece funcionar, lo que me lleva a la teoría de que Windows bloquea la pantalla después de terminar la conexión de escritorio remoto y la deja desbloqueada si usa VNC.

Este post sugiere que la desactivación de capturas de pantalla cuando la pantalla está bloqueada es una función de Seguridad de 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; 

Funciona para mí, probablemente lo hace el trabajo para usted también :-) Si no funciona le sugiero que permite separar el código a diferentes servicios (servicio de windows) ya que en caso de que este problema puede que conecta con restricciones del grupo de aplicaciones. De todos modos, por favor, háganme saber cómo va todo.

Cuestiones relacionadas