Miałem ten sam problem. Dla mnie, w zależności od poziomu uprawnień użytkownika, niektóre linki, przyciski i inne elementy nie będą się wyświetlać na stronie. Część mojego pakietu testowała, czy brakuje elementów, których POWINIEN brakować. Spędziłem godziny, próbując to rozgryźć. W końcu znalazłem idealne rozwiązanie.
Powoduje to, że przeglądarka ma szukać wszystkich określonych elementów na podstawie. Jeśli tak 0, oznacza to, że nie znaleziono żadnych elementów opartych na specyfikacji. Następnie mam kod, aby wykonać instrukcję if, aby poinformować mnie, że nie została znaleziona.
To jest w C#, więc tłumaczenia musiałyby być zrobione Java. Ale nie powinno być zbyt trudne.
public void verifyPermission(string link)
{
IList<IWebElement> adminPermissions = driver.FindElements(By.CssSelector(link));
if (adminPermissions.Count == 0)
{
Console.WriteLine("User's permission properly hidden");
}
}
Istnieje również inna ścieżka, którą możesz wybrać w zależności od tego, czego potrzebujesz do testu.
Poniższy fragment służy do sprawdzania, czy na stronie nie ma określonego elementu. W zależności od istnienia elementu test wykonuję if else.
Jeśli element istnieje i jest wyświetlany na stronie, dałem console.writemi znać i przechodzę dalej. Jeśli dany element istnieje, nie mogę wykonać testu, którego potrzebowałem, co jest głównym powodem, dla którego muszę to skonfigurować.
Jeśli element nie istnieje i nie jest wyświetlany na stronie. Mam else w if else wykonuje 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.
}
Wiem, że jestem trochę spóźniony z odpowiedzią na OP. Mam nadzieję, że to komuś pomoże!