Eu tive o mesmo problema. Para mim, dependendo do nível de permissão do usuário, alguns links, botões e outros elementos não serão exibidos na página. Parte da minha suíte estava testando que os elementos que DEVEM estar faltando estão faltando. Passei horas tentando descobrir isso. Finalmente encontrei a solução perfeita.
O que isso faz é dizer ao navegador para procurar todos e quaisquer elementos com base especificados. Se resultar 0
, significa que nenhum elemento baseado na especificação foi encontrado. Então eu tenho o código executar uma instrução if para que eu saiba que não foi encontrado.
Como está C#
, então as traduções precisariam ser feitas para Java
. Mas não deve ser muito difícil.
public void verifyPermission(string link)
{
IList<IWebElement> adminPermissions = driver.FindElements(By.CssSelector(link));
if (adminPermissions.Count == 0)
{
Console.WriteLine("User's permission properly hidden");
}
}
Há também outro caminho que você pode seguir, dependendo do que você precisa para o seu teste.
O seguinte snippet está verificando se existe um elemento muito específico na página. Dependendo da existência do elemento, tenho o teste para executar um if else.
Se o elemento existir e for exibido na página, console.write
informe-me e seguir em frente. Se o elemento em questão existir, não posso executar o teste necessário, que é o principal motivo por trás da necessidade de configurá-lo.
Se o elemento Não existir e não for exibido na página. Eu tenho o else no if else executar o teste.
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.
}
Eu sei que estou um pouco atrasado na resposta ao OP. Espero que isso ajude alguém!