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.write
mi 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!