Frage

Ich bin für eine Webalbum Anwendung eine Reihe von Selenium-Tests zu schaffen. Ich würde Test mag, ob ein Bild tatsächlich angezeigt wird (es gilt Bilddaten enthält). Ist so etwas möglich?

War es hilfreich?

Lösung

stand ich diese ähnliche Situation vor, wo die src des Bildes wie erwartet, aber das Bild wird auf der Seite nicht angezeigt.

Sie können überprüfen, ob das Bild angezeigt zu werden oder nicht, indem den JavaScriptExcecutor verwendet wird.

Verwenden Sie den folgenden Code - Übergeben Sie das WebElement (Bild) -

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

Sie können überprüfen, ob das Bild tatsächlich auf der Webseite, indem Sie diese geladen ist.

Andere Tipps

Wenn Sie Java verwenden, hat Selen eine Methode namens eval oder so. Sie geben ihm einen JavaScript-String und es gibt Ihnen das Ergebnis als String zurück. Zum Beispiel könnten Sie diese (in einer Zeile) versuchen:

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

Dies sollte zurückgeben "true" für den Status 200 oder "false" für etwas anderes.

Wenn Sie bereit sind, verwenden, um die Testplan Frontend Selen gibt ein paar Optionen. Sobald Sie die URL des Bildes haben, können Sie diese URL greifen und die zurückgegebenen Header inspizieren. Sie können in einer Datei speichern Sie die Daten auch dann, wenn Sie es manuell überprüfen möchten. Oder Sie können einen Validator in Java schreiben, die Daten zu nehmen und überprüfen, um zu sehen, ob es tatsächlich decodiert.

Wenn Sie bereit sind, es zu versuchen, dann werde ich Sie ein Beispielskript schreiben. Ich kann sogar eine schnelle Bild Prüffunktion tun, wenn Sie möchten.

Mit diesem Motto Funktion:

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

Dabei gilt:

imageWebElement = WebElement lokalisieren Bild auf Seite

isImageLoaded = Ergebnis in boolean (return true, wenn Bild vorhanden ist, falsch, wenn sie nicht)

Sie können sicher überprüfen, dass das Bild auf der Seite Quelle erscheint z.B. durch einen XPath-Parameter verwendet wird.

Sie können davon ausgehen, dass, weil es auf der Seite Quelle ist, wird es angezeigt, aber ich weiß nicht von irgendeiner Weise dies tatsächlich überprüfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top