2010-10-29 20 views

Respuesta

18

Me enfrenté a esta situación similar antes donde el src de la imagen es el esperado pero la imagen no se muestra en la página.

Puede verificar si la imagen se muestra o no con el JavaScriptExcecutor.

utilizar el siguiente código - Pasar el WebElement (imagen) -

Object result = ((JavascriptExecutor) driver).executeScript(
    "return arguments[0].complete && "+ 
    "typeof arguments[0].naturalWidth != \"undefined\" && "+ 
    "arguments[0].naturalWidth > 0", image); 

    boolean loaded = false; 
    if (result instanceof Boolean) { 
     loaded = (Boolean) result; 
     System.out.println(loaded); 
    } 

Puede comprobar si la imagen en realidad se ha cargado en la página web al hacer esto.

+1

Gracias, no esperaba que nadie publicara una solución de trabajo después de tantos meses. Terminé usando este código para verificar que todas las imágenes estén presentes en la página: 'var elems = document.getElementsByTagName (" img "); var allOk = verdadero; for (var i = 0; i 0; console. log (elems [i] .naturalWidth);} allOk; '. –

+0

Su bienvenida. Me alegro de que resolvió tu problema. –

+0

¡Buen trabajo! Una nota: nuestros desarrolladores tienen una imagen de marcador de posición que es 400px, y la cambian con la imagen cargada de pereza cuando se desplaza hacia ella. Entonces, la última prueba, para mí, es 'arguments [0] .naturalWidth! = 400'. Consulte con sus desarrolladores para obtener ayuda. – SiKing

0

Sin duda, puede verificar que la imagen aparezca en el origen de la página, p. usando un parámetro XPath.

Puede suponer que, como está en el origen de la página, se mostrará pero no conozco ninguna forma de validarlo.

+0

Hay una situación, cuando la página de la galería se genera correctamente, pero la imagen en sí no es válida, por ejemplo, debido a una excepción en el script de la imagen. –

1

Si está dispuesto a utilizar la interfaz TestPlan de Selenium, tiene algunas opciones. Una vez que tenga la URL de la imagen, puede tomar esta URL e inspeccionar los encabezados devueltos. también puede guardar los datos en un archivo si desea inspeccionarlo manualmente. O puede escribir un validador en Java para tomar esos datos y verificar si realmente se decodifica.

Si está dispuesto a probarlo, le escribiré un script de muestra. Incluso puedo hacer una función de validación rápida de imágenes si lo desea.

+0

Este software parece interesante, pero estoy obligado a usar Bromine fron-end. Nuestra empresa ya ha dedicado algunas horas-hombre para personalizarlo y dejar ese trabajo solo porque las pruebas de imagen no son viables. Gracias por el consejo. –

2

Si está utilizando Java, el selenio tiene un método llamado eval más o menos. Le da una cadena de JavaScript y le da el resultado como una cadena. Por ejemplo, usted podría intentar esto (en una línea):

var req = new XMLHttpRequest(); 
req.open('get', document.getElementById('imageid').src, false); 
req.send(null); 
req.status==200 

Esto debería devolver "verdad" para el estado 200 o "falso" para otra cosa.

+0

¿Qué hacer si la imagen no tiene identificación? La imagen tiene nombre y clase: ¿qué hacer en ese caso? –

Cuestiones relacionadas