J'ai eu le même problème. Pour moi, selon le niveau d'autorisation d'un utilisateur, certains liens, boutons et autres éléments ne s'afficheront pas sur la page. Une partie de ma suite testait que les éléments qui DEVRAIENT manquer, le sont. J'ai passé des heures à essayer de comprendre cela. J'ai finalement trouvé la solution parfaite.
Cela indique au navigateur de rechercher tous les éléments en fonction spécifiés. S'il en résulte0
, cela signifie qu'aucun élément basé sur la spécification n'a été trouvé. Ensuite, le code exécute une instruction if pour me faire savoir qu'il n'a pas été trouvé.
C'est dans C#
, donc des traductions devraient être faites Java
. Mais ça ne devrait pas être trop dur.
public void verifyPermission(string link)
{
IList<IWebElement> adminPermissions = driver.FindElements(By.CssSelector(link));
if (adminPermissions.Count == 0)
{
Console.WriteLine("User's permission properly hidden");
}
}
Il existe également un autre chemin que vous pouvez emprunter en fonction de ce dont vous avez besoin pour votre test.
L'extrait de code suivant vérifie si un élément très spécifique existe sur la page. En fonction de l'existence de l'élément, le test exécute un if else.
Si l'élément existe et est affiché sur la page, j'ai console.write
m'en suis informé et je passe à autre chose. Si l'élément en question existe, je ne peux pas exécuter le test dont j'avais besoin, ce qui est le principal raisonnement derrière la nécessité de le configurer.
Si l'élément n'existe pas et n'est pas affiché sur la page. J'ai le else dans le if else exécuter le test.
IList<IWebElement> deviceNotFound = driver.FindElements(By.CssSelector("CSS LINK GOES HERE"));
//if the element specified above results in more than 0 elements and is displayed on page execute the following, otherwise execute whats in the else statement
if (deviceNotFound.Count > 0 && deviceNotFound[0].Displayed){
//script to execute if element is found
} else {
//Test script goes here.
}
Je sais que je suis un peu en retard sur la réponse au PO. Espérons que cela aide quelqu'un!