Selenium Webdriver: les meilleures pratiques pour gérer un NoSuchElementException
Après beaucoup de recherches et de lecture, je ne suis toujours pas clair quant à la meilleure façon de gérer un échec d'assertion à l'aide de Webdriver. J'aurais pensé que c'était une commune et au coeur de la fonctionnalité. Tout ce que je veux faire c'est:
- rechercher un élément
- si aujourd'me dire
- si non présent - dites-moi
Je tiens à présenter les résultats d'une technique non public, donc de l'avoir jeter "NoSuchElementExceptions' avec un plein de trace de la pile n'est pas utile. Je veux simplement un gentil message.
Mon test:
@Test
public void isMyElementPresent(){
// WebElement myElement driver.findElement(By.cssSelector("#myElement"));
if(driver.findElement(By.cssSelector("#myElement"))!=null){
System.out.println("My element was found on the page");
}else{
System.out.println("My Element was not found on the page");
}
}
Je reçois toujours un NoSuchElementException jeté quand je force un échec. Ai-je besoin d'un try/catch? Puis-je intégrer Junit affirmations et/ou Hamcrest pour générer un plus significatif message sans la nécessité d'un Système..println?
OriginalL'auteur Steerpike | 2014-04-01
Vous devez vous connecter pour publier un commentaire.
J'ai rencontré des situations similaires. Selon le Javadoc pour la
findElement
etfindElements
Api, il semble que lafindElement
comportement est par la conception. Vous devez utiliserfindElements
pour vérifier la non-éléments présents.Puisque dans votre cas, il y a une chance que le WebElement est pas présent, vous devez utiliser
findElements
à la place.Je ne l'utiliserais comme suit.
ensuite ne pas (j'.e google "échec de test JUnit" ) le test, si la première condition est vraie. Cette réponse était simplement pour vous montrer le principe de base.
OK merci, je peux pas croire que je n'ai pas trouver l'échec(string) de la méthode jusqu'à maintenant!
OriginalL'auteur Vish
vous pouvez faire quelque chose pour vérifier si un élément existe
essayez de trouver des tous les éléments sur la page. Donc, si elle fonde premier et le seul élément encore il analyse reste de la page pour vérifier si il y a plus d'éléments correspondants. Il donne un peu de surcharge
Votre code fonctionne pour vous !! Mais je crois que les blocs try catch ne sont pas destinés à être utilisés de cette manière. Là encore c'est mon avis.
Au lieu de mœurs et croit que je préfère de la performance. Ses mon avis.
Aussi à l'OPs de cas nombre maximum d'élément souhaité est de 1 donc je préfère
findElement
OriginalL'auteur xyz
Que sur l'utilisation d'un xPath à l'intérieur d'un try-catch, en passant la elementype, l'attribut et le texte comme suit?
OriginalL'auteur Nic