У мене було те саме питання. Для мене, залежно від рівня дозволу користувача, деякі посилання, кнопки та інші елементи не відображатимуться на сторінці. Частина мого набору перевіряла, що відсутні елементи, яких БУДЕ БУТИ. Я витратив години, намагаючись розібратися в цьому. Нарешті я знайшов ідеальне рішення.
Що це робить, це говорить браузеру шукати будь-які та всі вказані елементи. Якщо це призведе до 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");
}
}
Існує також інший шлях, який ви можете пройти в залежності від того, що вам потрібно для вашого тесту.
Наступний фрагмент перевіряє, чи існує на сторінці певний елемент. Залежно від існування елемента, я маю тест виконати якщо інше.
Якщо елемент існує і відображається на сторінці, я 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.
}
Я знаю, що я трохи запізнююся на відповідь на ОП. Сподіваємось, це комусь допомагає!