Pregunta

Estoy creando una serie de pruebas de selenio para una aplicación álbum web. Me gustaría probar si una imagen se muestra realmente (que contiene datos de imagen válido). Es posible tal cosa?

¿Fue útil?

Solución

Me enfrentó esta situación similar antes que el src de la imagen es como se esperaba, pero la imagen no se mostrará en la página.

Puede comprobar si la imagen está siendo representada o no mediante el uso de la JavaScriptExcecutor.

Utilice 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);
    }

Se puede verificar si la imagen en realidad se ha cargado en la página web al hacer esto.

Otros consejos

Si está utilizando Java, el selenio tiene un método denominado eval más o menos. Se le da una cadena 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.

Si usted está dispuesto a utilizar las testplan frontend al selenio hay algunas opciones. Una vez que tenga la URL de la imagen que puede agarrar esta URL e inspeccionar las cabeceras devueltas. También puede guardar los datos en un archivo si lo desea inspeccionar manualmente. O puede escribir un validador en Java para tomar esos datos y comprobar para ver si realmente decodifica.

Si usted está dispuesto a probarlo entonces voy a escribir un script de ejemplo. Incluso me puedo hacer una función de validación rápida de la imagen si lo desea.

Utilice esta función un trazador de líneas:

Boolean isImageLoaded = (Boolean) ((JavascriptExecutor)driver).executeScript("return arguments[0].complete && typeof arguments[0].naturalWidth != \"undefined\" && arguments[0].naturalWidth > 0", imageWebElement);

donde:

imageWebElement = WebElement para localizar la imagen en la página

isImageLoaded = Resultado en booleano (devolver verdadero si la imagen está presente, falso si su no)

Por supuesto que se puede comprobar que la imagen aparece en la fuente de la página, por ejemplo, mediante el uso de un parámetro XPath.

Se puede asumir que porque está en el origen de la página, se mostrará, pero no sé de ninguna manera de validar esta realidad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top