2017-10-11 12 views
-1

J'ai la méthode pour sélectionner l'élément par le texte visible en utilisant Select class. L'élément que je passe dans le paramètre n'est pas dans la liste. Je veux que le test échoue et donne moi l'erreur qu'aucun élément de ce type n'a été trouvé, mais le sélénium continue d'attendre que l'élément apparaisse et n'échoue pas. Existe-t-il un moyen d'échouer avec force le test et d'imprimer l'exception?Selenium select class ne renvoie PAS d'erreur lorsqu'il ne trouve pas d'élément dans la liste déroulante

public static void selectAnItem(String elemetLocator, String itemToSelect){ 
    Select select = new Select(driver.findElement(By.xpath(elemetLocator))); 
    try { 
     select.selectByVisibleText(itemToSelect); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

Bien sûr que oui ... vous avez mangé l'erreur avec votre 'catch' ... quel est le problème? – JeffC

+0

@JeffC Merci. Cela a fonctionné maintenant. J'ai enlevé la prise d'essai et j'ai vu qu'il fallait quelques minutes pour échouer et lancer une erreur. – ktmrocks

+0

OK. Je vais ajouter mon commentaire en guise de réponse pour que vous puissiez l'accepter afin que la question ne reste pas sans réponse. – JeffC

Répondre

1

Le problème est que vous mangez l'exception avec le try-catch. Si vous supprimez cela, il devrait lancer l'erreur que vous attendez.

Une suggestion ... plutôt que de passer dans un String elementLocator, passer dans une classe By. Cela vous permettra d'utiliser plus que simplement XPaths, par ex.

public static void selectAnItem(By locator, String itemToSelect) 
{ 
    new Select(driver.findElement(locator)).selectByVisibleText(itemToSelect); 
} 

vous pouvez utiliser By.id(), By.cssSelector(), et ainsi de suite.