Quais são as esperas na estrutura do selênio?
O selênio espera ajuda para resolver os problemas de sincronização. A sincronização é o processo de correspondência da "velocidade da ferramenta de automação de teste" com a velocidade do "site em teste". Nesse processo, o WebDriver executa uma determinada tarefa na página da web, mas o webElement não está carregado em "Site Under Test". Nesta situação, o webdriver joga uma "NosulementExpeção" ou "ElementNotVisibleExpecção". Existem três tipos de método de espera que são fornecidos pela estrutura de selênio.
Espera implícita
Esse tipo de espera se aplica a todos os elementos do site e é por isso que é chamado de espera global. O método implícita de quewait () é usado para chamá -lo.
Espera explícita
É um tipo de espera específico para webElement. Espera por um certo tempo para carregar o elemento específico antes de jogar uma exceção.
Espera fluente
Dá o máximo de tempo para encontrar o webElement.
O que é uma espera explícita no selênio?
O tipo de espera explícito é diferente da espera implícita. Este método de espera é mantido por um certo tempo até que uma condição específica ocorra antes de prosseguir para a próxima linha de código. É útil onde alguns elementos carregam mais rápido e alguns elementos carregam mais devagar. Por exemplo: Existem dois ou três elementos que levam de 20 a 30 segundos para carregar na página da web. Aqui, você não pode ir e mudar a espera de acordo com o tempo máximo que é levado por um dos webElement. É aí que a espera explícita faz sua parte. Espera explícito especifica a espera por esse elemento específico na página da web. Você pode especificar para esperar um elemento específico por um longo tempo; É aí que usamos a espera explícita. O método WebDriverWait é usado para chamar a espera eexplictic.
Interface de selenium webbrowser
A interface do webdriver permite a implementação do teste de automação. O WebDriver é usado para controlar e criar interação entre ferramentas de automação de site e selênio, como encontrar os elementos, navegar pelos URLs, obtendo propriedades de atributo, confirmando se o texto está lá no webElement, pesquisando um elemento e mais.
Você pode utilizar uma variedade de navegadores da web, incluindo Firefox, Safari e Chrome. Todo tipo de navegador tem uma classe específica para esse tipo de navegador como Firefoxdriver, Chromedriver, InternetexplorerDriver, etc. Todos os navegadores podem ser implementados através do método WebDriver.
Aqui está a sintaxe para usar a interface da webdriver:
do selênio importar webdriverNo pedaço de código fornecido, criamos o objeto "driver" do webdriver. Aqui, usamos o navegador Chrome com o método.Classe Chrome (). Depois disso, o navegador lança e abre o URL fornecido.
Exemplo 1:
Neste primeiro programa, um exemplo de espera explícito muito básico é implementado, que é muito útil para iniciantes e desenvolvedores experientes.
Existem cenários em que encontramos primeiro o webElement "OFERSOS DIÁRIOS" e navegamos até a página de ofertas diárias. Se a condição for verdadeira, imprima a “condição verdadeira”. Caso contrário, imprima a exceção “Condição falsa”.
Primeiro, importamos todas as bibliotecas necessárias de selênio e webbrowser. Para usar a espera explícita, importe as seguintes bibliotecas:
importação org.OpenQa.selênio.apoiar.Ui.Condições esperadas;Fornecemos o código completo no seguinte:
Pacote de interface do pacote;Agora, vamos entender o código anterior passo a passo e explicar quais ações cada linha executa.
No primeiro pedaço de código, obtemos as bibliotecas do navegador da máquina e depois lançamos os drivers do navegador Chrome.
Neste exemplo, usamos o navegador Chrome. A sintaxe a seguir é usada para implementá -lo:
Sistema.setProperty ("WebDriver.cromada.Driver "," C: \\ BrowserDrivers \\ Chromedriver.exe");Depois disso, maximizamos a janela do navegador e abrimos o site fornecido usando a seguinte sintaxe dada:
motorista.gerenciar().janela().maximizar();Para este exemplo, usamos o site do eBay localizado em https: // www.eBay.coma.
Se quisermos verificar se a hiper-line "Deal Caso Daily" existe ou não, devemos saber onde o "negócio diário" está presente no site. Para encontrar o localizador LinkText do hiper-line "OFERSA DIÁRIO", precisamos inspecionar as "ofertas diárias" em particular na página da web e encontrar a tag inertext. A captura de tela está anexada a seguir para ver onde podemos encontrar a tag "Ofertas diárias".
Na captura de tela anterior, vemos que a tag de "Diário" está presente na página da web. Se não houver uma tag presente, não há hiper-line presente “diariamente '. Precisamos usar esta dica a seguir:
motorista.FindElement (por.LocatorType ("locatorValue"));Usamos o motorista.Método findElements () para verificar se um elemento está presente em uma página da web ou não. O objeto "por" é um parâmetro para o comando de elemento encontrado que entrega um objeto do tipo webElement. As várias técnicas de localizador, como nome, ID, className, XPath, etc. O texto do link pode ser usado com o objeto "por". Como sabemos, uma lista de webElements localizados usando o parâmetro "por locator" é retornada pela função findElements (). Se o elemento for encontrado, uma lista de webElements diferentes de zero será retornada. Caso contrário, uma lista do tamanho 0 é retornada. Como resultado, a duração da lista pode ser utilizada para determinar se uma entrada está presente ou não.
Para este exemplo, usamos o localizador LinkText, como mostrado na sintaxe a seguir:
motorista.FindElement (por.LinkText ("OFERSAS DIÁRIAS")).clique();No código de código anterior, encontre o texto de hiper-line “OFERSA DIÁRIO” primeiro. Depois disso, use a função click () para navegar para outra página.
Depois disso, a espera explícita é implementada na seguinte sintaxe:
Webdriverwait wait = novo webdriverwait (driver, duração.de segundos (10));Quando usamos o pedaço anterior de código para a espera explícita, lembre.
O método WebDriverWait é usado para implementar explicitamente. Crie o objeto de referência "Wait" da classe WebDriverwait. Em seguida, aloque a memória com o novo WebDriverwait e passe dois parâmetros (1) objeto de referência do driver da web e mencionado (2) duração (driver, duração.de segundos (10)).
Agora, use o objeto de referência da classe WebDriverwait, que é "espera" para ligar para o método até () e aprovar a visibilidade esperada para a base locada (por.id) condição. Se a condição esperada for verdadeira, retorne o webElement e aguarde 10 segundos até que essa condição se torne realidade. Esta condição esperada é a especificação do webElement. Aqui, temos que esperar pela visibilidade do "elemento". Se o elemento estiver visível dentro de 5 segundos, aguarde saídas. Caso contrário, maximiza a espera por 10 segundos.
Aqui está a sintaxe dada para a condição esperada:
Espere.Até (Condições esperadas.Visibilidade do AlementLocated (por.id ("elemento")));Existem muitas condições esperadas que são fornecidas pelo selênio, como alertispresent (), elementselectionStateToBe (), elementTobeclickable (), etc. Aqui neste tutorial, usamos a condição “visiblityoflementlocated ()”.
Vamos para o próximo pedaço de código onde temos a "condição verdadeira":
tentarPara verificar se o elemento existe ou não, usamos uma tentativa de captura de bloco. Tudo o que precisamos fazer é tentar encontrar o elemento e interagir com ele.
Elemento webElement = aguarde.Até (Condições esperadas.Visibilidade do AlementLocated (por.linkText ("negócios diários")));Aguarde o elemento com o linktext de “ofertas diárias”. Se encontrarmos o webElement, clique nesse elemento para navegar para outra página e imprimir a "condição verdadeira" no console.
Aqui na captura de tela de saída a seguir, podemos ver que o elemento achado é bem -sucedido. Navegue pela página:
Vamos para o próximo pedaço de código, onde temos a “condição falsa”:
tentarSe o texto hiper-line "elemento errado" não estiver presente na página da web, jogue a exceção e imprima a saída "Condição falsa" no console.
Na captura de tela de saída a seguir, podemos ver que o elemento é encontrado sem êxito:
Finalmente, depois de executar todo o código, feche o navegador usando o método de abandono ().
motorista.desistir();
Conclusão
Você agora aprendeu sobre as vantagens de espera explícitas de selênio. Você aprenderá como implementá -lo em um cenário real. Este artigo implementa o exemplo em que você mantém a execução de mais código até encontrar o elemento em um determinado tempo de espera. Este artigo contém as condições de tentativa e captura. Se o elemento estiver saindo, imprima a “condição verdadeira”. Caso contrário, imprima a “condição falsa”.