Я была такая же проблема. Для меня, в зависимости от уровня разрешений пользователя, некоторые ссылки, кнопки и другие элементы не будут отображаться на странице. Часть моего набора тестировала, что элементы, которые ДОЛЖНЫ отсутствовать, отсутствуют. Я часами пытался понять это. Я наконец нашел идеальное решение.
Что он делает, так это говорит браузеру искать все элементы на основе указанных. Если это приводит к тому 0
, что это означает, что элементы, основанные на спецификации, не были найдены. Затем у меня есть код выполнения оператора if, чтобы сообщить, что он не был найден.
Это в C#
, так что переводы должны быть сделаны для Java
. Но не должно быть слишком сложно.
public void verifyPermission(string link)
{
IList<IWebElement> adminPermissions = driver.FindElements(By.CssSelector(link));
if (adminPermissions.Count == 0)
{
Console.WriteLine("User's permission properly hidden");
}
}
Есть также другой путь, который вы можете выбрать в зависимости от того, что вам нужно для теста.
Следующий фрагмент проверяет, существует ли на странице очень специфический элемент. В зависимости от существования элемента я могу выполнить тест if else.
Если элемент существует и отображается на странице, я console.write
дал мне знать и двигаться дальше. Если рассматриваемый элемент существует, я не могу выполнить необходимый мне тест, что является основной причиной необходимости его настройки.
Если элемент не существует и не отображается на странице. У меня есть еще в если еще выполнить тест.
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.
}
Я знаю, что немного опоздала с ответом на ФП. Надеюсь, это кому-нибудь поможет!