Como gerenciar as condições esperadas no selênio

Como gerenciar as condições esperadas no selênio

Erros chegam inesperadamente e podem interromper o fluxo normal de execução. Isso é algo que todo programador ou testador enfrenta em um ponto ou outro durante a codificação e teste. O lema principal dos testadores é depurar o erro e resolvê -lo. Neste artigo, entenderemos o que são exceções no selênio e como lidar com eles. Depois disso, veremos uma visão geral da hierarquia da exceção. Também falaremos sobre os tipos de exceções e a diferença entre as exceções verificadas e desmarcadas e a sintaxe básica do manuseio.

O que é manuseio de exceção?

Uma exceção é uma ocorrência durante uma execução programada que impede as instruções de seguir o fluxo regular do programa. Para colocar de outra maneira, qualquer coisa que faça com que seu caso de teste pare enquanto estiver em execução é conhecido como uma exceção. Quando um acontece, o aplicativo é interrompido e um objeto de exceção é produzido. Depois que uma exceção é levantada, o programa procura alguém para lidar com isso. Muitas informações de depuração são fornecidas pelo objeto de exceção, incluindo a hierarquia do método, o número da linha em que a exceção ocorreu, o tipo de exceção e mais. Como resultado, você verá os vários erros enquanto trabalha com o selanium webdriver, dependendo do código que você escreve. Às vezes, o mesmo código funciona bem, enquanto outros não. Quando você executa seus scripts, você pode encontrar algumas exceções diferentes. Portanto, toda vez que você cria um script, você se esforça para fornecer a mais alta qualidade de código; portanto, se ocorrer um primeiro problema, ele cria e lança uma exceção e finalmente lide com ele.

Hierarquia de exceção

Circunstâncias excepcionais devem ser capturadas pelo aplicativo do usuário usando esta classe. Outra filial, como erro, é usada pelos outros sistemas de tempo de execução do Java para indicar os erros que estão associados a ele. Basicamente, sob exceções, existem dois tipos de exceções: um é verificado e o outro não é controlado. Vamos ver a diferença entre essas duas exceções: exceções verificadas e desmarcadas.

Uma exceção verificada significa que é uma exceção que é. A exceção desmarcada ocorre durante a execução, mesmo que o compilador a verifique durante a compilação. As exceções verificadas são essencialmente referidas como exceções de tempo de compilação, enquanto as exceções desmarcadas são chamadas de exceções de tempo de execução. Para entender a exceção verificada, o programador deve lidar com essa exceção para manter o fluxo normal de execução. Enquanto as exceções de tempo de execução podem ser ignoradas e não haverá muita diferença no fluxo de execução do programa. Esta é a principal diferença entre as exceções verificadas e desmarcadas.

Exceções de classe

public static void main (string args [])
tentar

Catch (Exceção e)

É assim que a estrutura da exceção parece. Você cria uma aula e escreve um bloco de tentativa dentro do método principal, no qual você escreve um código que pode aumentar uma exceção. Dentro do bloco de captura, você escreve o código que precisa executar isso. O código levanta uma exceção incluída no bloco de tentativa. Então, o código lança uma exceção no bloco de tentativa. Então, para continuar com o fluxo de execução normal, ele é tratado no bloco de captura.

Tipos de exceções em selênio

Existem diferentes tipos de exceções mencionadas no seguinte:

WebDriveRexception

Se você tem o driver Chrome instalado, mas tenta realizar uma atividade, ocorre um erro quando você tenta fazê -lo. Esta exceção é levantada em um motorista do Mozilla Firefox, que é um motorista Geeko.

NosuchElementException

Esta exceção é lançada quando o driver da web não encontra o elemento na estrutura do tambor. Isto é, se você não conseguir localizar um elemento específico, ele não diz tal elemento exceção. Ou seja, se esse elemento não estiver presente, essa é a razão pela qual não lança tal elemento exceção.

tentar
motorista.Get (“https: // ABC.com/iframe ”);
motorista.FindElement (por.id ("timcd")).SendKeys (… .keystosend: "hello");
Catch (notfoundException e)
sistema.fora.printin ("não encontrado");
e.printStackTrace ();
;

Vimos uma exceção "não encontrada" neste código. Primeiro, você precisa ir para o URL. Em seguida, mude para o quadro e depois digite algo. Se você não mudar e digitar diretamente em um elemento, ele mostra o erro "não encontrado" no elemento de captura.

NosuchframeException

Se você deseja executar uma ação que alterne entre os quadros e não é capaz de fazer isso porque o quadro filho não está presente ou o quadro pai não pode navegar no quadro filho, nenhuma exceção de quadro é levantada nesses casos.

NoalertPresentException

Este erro aparece quando tentamos desempenhar uma função que é aceita ou rejeitada e não é necessária no local necessário.

Da mesma forma, temos um alerta de javascript. Se não clicarmos no alerta de javascript, não haverá alerta neste caso. Se tentarmos mudar esse alerta, ele lhe dar.

TimeoutException

Esta exceção é lançada quando um comando não conclui a tarefa em um determinado período de tempo.

Aqui estão os métodos para lidar com uma exceção com sintaxe:

Tente: é usado para especificar um bloco onde colocamos o código de exceção.

Tentar
// Código está escrito aqui
catch (excepcion_class_name)

Catch: Este bloco é usado para lidar com a exceção.

tentar
Catch (ExceptionName E1)
/// Capt Block Code

Arremesso: isso é usado para lançar uma exceção.

Catch (Exceção e)
Sistema.fora.println (“Elemento não está presente.”);
jogue (e);

Lances: é usado para declarar qual é a exceção.

public static void main (string [] args)
lança interruptedException

Finalmente: é usado para executar o código crucial do programa.

tentar
//// Código crítico aqui
Catch (Exceção E1)
[/// Capt Block Code
finalmente
//// Este bloco de código é executado

Métodos para lidar com uma exceção com códigos

Primeiro, criamos uma classe excepcional.

Exception de classe pública ManguarlingExample

Primeiro lançamos o driver Chrome para lançar o Google e navegar por um site específico determinado. Em seguida, usamos o sono do ponto de linha para dormir por 3000, que é três milissegundos. Então, encontramos um elemento pelo nome que é “falso.clique". Agora, esse elemento não está presente, então o que faz é lançar uma exceção chamada "não esse elemento" exceção. Então, depois de executar o código, veremos o driver do Chrome lançado.

Webdriver mydriver = new Chromedriver ();
Meu motorista.Get (https: // www.Google.com);
Fio.Sleep (3000);
Meu motorista.FindElement (por.nome ("falso"))).clique;

Nada aconteceu porque a exceção é levantada aqui. Como podemos ver, ele joga uma exceção dizendo "nenhum elemento".

Agora, para lidar com isso, usamos o bloco de tentativa e captura. No bloco de tentativa, use o seguinte comando:

catch (nosuchElementException e)
Sistema.fora.println (“Elemento não está presente.”);
Sistema.fora.println ("oi");

Sistema.fora.println ("oi");

Escrevemos o código que lança uma exceção. Este código já joga uma exceção de que esse elemento é encontrado. No bloco de tentativa, escrevemos a exceção "não esse elemento". Dentro disso, imprimimos o "elemento não é encontrado" e "Olá". Novamente, fora do bloco de tentativa, queremos verificar se o fluxo normal de execução é transportado ou não. É por isso que imprimimos esta declaração fora do bloco. Depois de executar o código, ele não lança a exceção. Ele imprime “olá” duas vezes: a primeira vez está dentro do bloco de captura e a segunda vez está fora do bloco de tentativa e captura. Para garantir que o fluxo normal da execução não seja interrompido, é assim que podemos lidar com as exceções:

Neste exemplo, vemos a falha da condição esperada e como lidar com isso.

Lista li;
@Sobrepor
público Void PerformAs (T ator)
li = BrowsheTheweb.como (ator).Finadall (por.xPath (“// div [@class = 'Nav-Fill'] // a [@data-csa-c-type = 'link']”));
para (int i = 0; i
Sistema.fora.Println (“-WebElementFacade Lista do nome do menu ####” +Li.Entendi).getText ());

Depois de executar este código, obtemos o resultado onde ele imprime todos os valores, mas o teste falha na janela de saída.

Agora, corrigimos este erro. Se fizermos mais de um valor antes de imprimir seu valor, precisamos verificar se o elemento é exibido ou não ou o valor é exibido ou não. Então, podemos imprimir esse valor. Nesse caso, escrevemos se o “li. pegar.A condição é exibida. Isso é para verificar a condição. Então, escrevemos a declaração de impressão. Depois de executar o código, ele lê todos os valores. Como resultado, passamos o teste. Ele lê todos os valores e, como resultado, passamos no teste.

Conclusão

Entendemos as condições esperadas no selênio. Também discutimos todas as exceções verificadas e desmarcadas no meio do artigo. Discutimos os tipos de exceções com exemplos. Por fim, abordamos como lidar com as exceções com códigos. Este artigo contém todos os detalhes sobre o manuseio do selênio e as circunstâncias antecipadas.