У меня была такая же проблема.Для меня, в зависимости от уровня разрешений пользователя, некоторые ссылки, кнопки и другие элементы не будут отображаться на странице.Часть моего набора тестировала, что элементы, которые ДОЛЖНЫ отсутствовать, отсутствуют.Я часами пытался понять это.Я наконец нашел идеальное решение.
То, что это делает, говорит браузеру искать любые элементы на основе указанных.Если это приводит к 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
, дайте мне знать и продолжайте.Если рассматриваемый элемент существует, я не могу выполнить необходимый тест, что является основной причиной необходимости его настройки.
Если элемент не существует и не отображается на странице.У меня есть else в if if, чтобы выполнить тест.
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.
}
Я знаю, что немного опоздал с ответом на OP.Надеюсь, это кому-нибудь поможет!