Selenio - controllare se l'immagine viene visualizzata a pagina
-
27-09-2019 - |
Domanda
Sto creando una suite di test Selenium per un'applicazione web album. Vorrei verificare se l'immagine viene visualizzata in realtà (che contiene dati di immagine valido). È una cosa possibile?
Soluzione
I ha affrontato questa situazione simile prima in cui lo src dell'immagine è come previsto, ma l'immagine non viene visualizzata nella pagina.
È possibile verificare se l'immagine è sempre visualizzata o meno utilizzando il JavaScriptExcecutor.
Utilizza il seguente codice - Passare il WebElement (immagine) -
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);
}
È possibile verificare se l'immagine è effettivamente caricato sulla pagina web in questo modo.
Altri suggerimenti
Se stai usando Java, il selenio ha un metodo chiamato eval
o giù di lì. Si dà una stringa javascript e ti dà il risultato sotto forma di stringa. Ad esempio, si potrebbe provare questo (in una sola riga):
var req = new XMLHttpRequest();
req.open('get', document.getElementById('imageid').src, false);
req.send(null);
req.status==200
Ciò dovrebbe restituire "vero" per lo stato 200 o "false" per qualcos'altro.
Se si è disposti a utilizzare i testplan frontend a lì Selenio alcune opzioni. Una volta che avete l'URL dell'immagine si può afferrare questo URL e controllare le intestazioni restituite. È inoltre possibile salvare i dati in un file se si desidera ispezionare manualmente. Oppure si può scrivere un validatore in Java per prendere i dati e controllare per vedere se decodifica in realtà.
Se siete disposti a provarlo poi ti scriverò uno script di esempio. Posso anche fare una funzione Quick Image validatore se vuoi.
Utilizzare questa funzione uno di linea:
Boolean isImageLoaded = (Boolean) ((JavascriptExecutor)driver).executeScript("return arguments[0].complete && typeof arguments[0].naturalWidth != \"undefined\" && arguments[0].naturalWidth > 0", imageWebElement);
dove:
imageWebElement
= WebElement per individuare un'immagine a pagina
isImageLoaded
= Risultato in booleana (return true se l'immagine è presente, false se non la sua)
Si può certamente controllare che l'immagine viene visualizzata nella sorgente della pagina per esempio utilizzando un parametro XPath.
Si può supporre che, perché è nel sorgente della pagina, verrà visualizzato ma non so di alcun senso realmente convalidare questa.