2017-10-17 1 views
0

J'essaie de valider une image chargée dans la page Web en utilisant Selenium. Voici la ligne que j'utilise pour la même chose. Le 'ImagePresent' renvoie toujours 'false' même s'il est capable de capturer et d'imprimer la valeur d'attribut de l'image à partir de la dernière ligne.La validation d'image à l'aide de JavascriptExecutor retourne toujours 'false' même lorsque l'image est chargée

WebElement Imglogo = driver.findElement(By 
      .xpath("//img[@src='Images/Logo.png']")); 

    Boolean ImagePresent = (Boolean) ((JavascriptExecutor) driver) 
      .executeScript(
        "return arguments[0].complete && typeof arguments[0].naturalWidth != \"undefined\" && arguments[0].naturalWidth > 0", 
        Imglogo); 
    System.out.println("The boolean value of ImagePresent: "+ImagePresent); //returns false 
    System.out.println("Image Attribute: "+Imglogo.getAttribute("src")); //prints the full path 
+0

Je ne connais pas le sélénium, donc cela peut être complètement inutile - mais y a-t-il une chance que vous fassiez votre évaluation avant le chargement de la page? Y a-t-il un moyen de joindre à l'événement '.load' pour l'élément image et de faire vos évaluations quand ça se déclenche? – theGleep

Répondre

0

Je pense que vous essayez d'être trop chic ici. Vous n'avez pas vraiment besoin de JSE dans ce cas. Vous pouvez simplement utiliser .getAtribute("naturalWidth") et comparer le rendement attendu.

WebElement Imglogo = driver.findElement(By.xpath("//img[@src='Images/Logo.png']")); 
System.out.println(Imglogo.getAttribute("naturalWidth")); 
System.out.println(Imglogo.getAttribute("naturalWidth").equals("0")); 

... et ainsi de suite.

+0

J'ai essayé votre suggestion. Mais il retourne encore faux. – sjkp

+0

Quel code spécifique as-tu essayé en retournant false? – JeffC