Armazenar variáveis, eco, alerta, manipulação de pop-up em Selenium IDE

⚡ Resumo Inteligente

Armazenar comandos em Selenium O IDE salva valores de tempo de execução em variáveis ​​nomeadas, o comando `echo` os imprime no log e uma família de comandos dedicada lida com alertas, diálogos de confirmação e alternância entre várias janelas do navegador.

  • 🔘 Criar uma variável: O comando store recebe o valor em Target e o nome da variável em Valor.
  • ☑️ Leia novamente: Coloque o nome entre ${ } sempre que um comando aceitar um alvo ou um valor.
  • Imprimir para depuração: O comando `echo` escreve uma string literal ou uma variável diretamente no log da IDE.
  • 🧪 Os alertas são aceitos automaticamente: O IDE clica em OK para você, então use storeAlert para capturar o texto da mensagem.
  • 🛠️ As confirmações precisam de uma decisão: Coloque chooseOkOnNextConfirmation antes do comando que abre a caixa de diálogo.
  • 📊 Troca de janelas: selectWindow seleciona o título de uma janela, e um alvo nulo retorna à janela pai.

Armazene variáveis, ecoe, alerte e manipule pop-ups em Selenium IDE

Neste tutorial, você aprenderá os comandos de armazenamento, o comando `echo` e o tratamento de alertas e pop-ups em Selenium IDEJuntos, esses comandos transformam um script gravado fixo em um script que reage a qualquer coisa que o aplicativo retorne em tempo de execução.

⚠️ Uma observação sobre as versões: As capturas de tela abaixo são do original. Firefox-plugar Selenium IDE, e os comandos usam seus nomes Selenese em camelCase. O Chrome atual, Firefox A extensão Edge mantém o mesmo comportamento, mas escreve a maioria dos nomes de comando com espaços. Um mapaping A tabela aparece perto do final deste artigo, e todos os comandos e capturas de tela originais foram mantidos conforme publicados.

Selenium Variáveis ​​IDE

Loja

Para armazenar variáveis ​​em Selenium IDE, nós usamos o loja comando. A ilustração abaixo armazena o valor “tutorial” em uma variável chamada “myVariable”.

Selenium O comando de armazenamento do IDE com o valor tutorial foi salvo em minhaVariável.

Para acessar a variável, basta colocá-la entre os símbolos ${ … }. Por exemplo, para inserir o valor de “myVariable” na caixa de texto “userName” de Mercury Tours, insira ${myVariable} no campo Valor.

Selenium Digite o comando no IDE usando ${myVariable} no campo Valor da caixa de texto userName.

Comando Echo em Selenium IDE

Uma variável armazenada é invisível até que algo a imprima, e é isso que a eco O comando faz isso. Ele grava uma mensagem no painel de log do IDE durante a reprodução, o que o torna a maneira mais rápida de confirmar se um comando de armazenamento capturou o que você esperava antes de criar asserções com base nele.

O comando aceita qualquer uma das seguintes formas:

  • Uma sequência literal. Insira o texto no Target campo, por exemplo Etapa de login concluída, para marcar um ponto de verificação em um roteiro longo.
  • Uma variável. Coloque ${myVariable} no Target O campo exibe o valor armazenado em vez do nome.

Dois hábitos tornam o comando `echo` muito mais útil do que parece à primeira vista. Imprima uma variável imediatamente após o comando `store` que a cria, de forma que uma falha seja detectada. tracEm vez de focar na asserção vinte passos depois, vá para a captura. E prefixe cada mensagem com a etapa à qual ela pertence, porque o painel de log mostra todos os comandos em uma única lista. Observe que o comando `echo` apenas escreve no log — ele nunca altera a página e nunca falha em um teste, portanto, é seguro deixá-lo permanentemente em um script.

StoreElementPresent

Este comando armazena “true” ou “false” dependendo da presença do elemento especificado. O script abaixo armazena o valor booleano “true” em “var1” e “false” em “var2”. Para verificar, usaremos o comando echo para exibir os valores de var1 e var2. A Base URL para a ilustração abaixo foi definido como Mercury Página inicial de passeios.

Selenium O método `storeElementPresent` do IDE salva o valor verdadeiro em `var1` e o valor falso em `var2`, conforme registrado no log.

StoreText

Este comando é usado para armazenar o texto interno de um elemento em uma variável. A ilustração abaixo armazena o texto interno da tag h1 na página de cadastro do Facebook em uma variável chamada “textVar”.

Selenium O comando storeText do IDE lê css=h1 e armazena na variável textVar.

Como é o único elemento desse tipo na página, podemos usar “css=h1” como nosso atributo target com segurança. A imagem abaixo mostra isso. Selenium O IDE conseguiu salvar a string “Sign Up” na variável “textVar”, porque o comando echo imprimiu seu valor corretamente.

Selenium O painel de log do IDE imprime "Inscrever-se" como o valor armazenado em textVar.

Alertas, pop-up e vários Windows

Os alertas são provavelmente a forma mais simples de janela pop-up. Os mais comuns Selenium Os comandos do IDE usados ​​no tratamento de alertas são os seguintes:

Alertas Uso

assertAlert

assertNotAlert

Recupera a mensagem do alerta e a compara com um valor de string que você especificou.

assertAlertPresent

assertAlertNotPresent

verifica se há ou não um alerta.
alertadeloja Recupera a mensagem de alerta e a armazena em uma variável que você especificar.
storeAlertPresent Retorna VERDADEIRO se houver um alerta, FALSO caso contrário.

verificar Alerta

verificarNotAlert

Recupera a mensagem do alerta e verifica se ela corresponde ao valor da string que você especificou.

verificarAlertPresent

verificarAlertNotPresent

verifica se existe ou não um alerta.

Lembre-se destas duas coisas ao trabalhar com alertas:

  • Selenium O IDE clica automaticamente no botão OK da janela de alerta, portanto você não poderá ver o alerta em si.
  • Selenium O IDE não consegue lidar com alertas disparados dentro da função onload() da página. Ele só lida com alertas gerados após a página ter carregado completamente.

Neste exemplo, usamos o comando storeAlert para mostrar que, embora Selenium O IDE não exibiu o alerta em si, mas ainda assim conseguiu recuperar a mensagem.

Passo 1) In Selenium IDE, defina a Base URL Acesse http://jsbin.com. O completo URL é http://jsbin.com/usidix. Esses trechos de código do jsbin datam de Firefox-plugin era e pode não resolver mais o problema; qualquer página com um botão que gera um alerta reproduz o mesmo resultado.

Passo 2) Crie o script conforme mostrado abaixo. O comando `click` tem como alvo o botão "Go!", `storeAlert` captura a mensagem em `alertMessage` e `echo` a imprime.

Selenium Script IDE com comandos click, storeAlert e echo para a página de demonstração de alertas do jsbin.

Passo 3) Execute o script e não espere ver o alerta propriamente dito. O painel de registro abaixo mostra a mensagem capturada, embora a caixa de diálogo nunca tenha sido exibida.

Selenium Log do IDE mostrando o texto do alerta recuperado por storeAlert após a reprodução.

Confirmações

As confirmações são janelas pop-up que exibem os botões "OK" e "Cancelar", ao contrário dos alertas, que exibem apenas o botão "OK". Os comandos que você pode usar para lidar com confirmações são semelhantes aos comandos de alerta.

  • assertConfirmation / assertNotConfirmation
  • assertConfirmationPresent / assertConfirmationNotPresent
  • lojaConfirmação
  • lojaConfirmaçãoPresente
  • verificarConfirmação / verificarNãoConfirmação
  • verificarConfirmaçãoPresente / verificarConfirmaçãoNãoPresente

Além disso, esses comandos informam Selenium Qual botão escolher, OK ou CANCELAR?

  • escolherOKNaPróximaConfirmação / escolherOKNaPróximaConfirmaçãoEAguardar
  • escolhaCancelOnNextConfirmação

Insira estes comandos antes o comando que aciona a caixa de confirmação, para que Selenium O IDE sabe antecipadamente qual opção escolher. Novamente, você não verá a caixa de confirmação durante a execução do script.

Vamos testar uma página da web com um botão que foi programado para informar se o usuário clicou em OK ou CANCELAR.

Passo 1) In Selenium IDE, defina a Base URL Acesse http://jsbin.com. O completo URL é http://jsbin.com/enifaf.

Passo 2) Crie o script conforme mostrado abaixo. Desta vez, primeiro pressionaremos o botão OK.

Selenium Script IDE que coloca chooseOkOnNextConfirmation antes do clique que abre a caixa de diálogo

Passo 3) Execute o script e observe que você não vê a confirmação propriamente dita, embora a página da web ainda indique qual botão foi clicado. Selenium IDE pressionado.

Página de teste informando que o botão OK da caixa de diálogo de confirmação foi pressionado.

Passo 4) Substitua o comando chooseOkOnNextConfirmation por chooseCancelOnNextConfirmation e execute o script novamente. A página agora exibirá a opção oposta.

Selenium Script IDE editado para usar chooseCancelOnNextConfirmation em vez de chooseOkOnNextConfirmation

Múltiplo Windows

Se você clicar em um link que abre uma janela separada, primeiro você deve instruir Selenium É necessário selecionar a janela no IDE antes de acessar os elementos dentro dela. No IDE antigo, o título da janela era usado como localizador.

Usamos o comando selectWindow para alternar entre janelas.

Usaremos o link http://jsbin.com/ocinaj/1, cujo título é “First Window”. O hiperlink “aqui” nessa página abre o Facebook em uma nova janela, após a qual daremos as instruções. Selenium IDE para fazer o seguinte:

  • Transfira o controle da janela principal para a janela do Facebook recém-inaugurada usando o comando selectWindow com o título da janela como localizador.
  • Verifique o título da nova janela.
  • Selecione novamente a janela original usando o comando selectWindow com “null” como destino.
  • Verifique o título da janela selecionada.

O plano acima se traduz na sequência de quatro etapas mostrada aqui.

Diagrama da alternância entre a janela principal e a nova janela, e vice-versa.

Passo 1) Estabeleça a base URL para http://jsbin.com.

Passo 2) Crie o script conforme mostrado abaixo.

Selenium Script IDE usando selectWindow, pause e verifyTitle para alternar entre duas janelas.

Precisamos do comando de pausa para aguardar o carregamento da janela recém-aberta antes de podermos ler seu título.

Passo 3) Execute o script. Observe que o caso de teste aprovado, o que significa que conseguimos alternar entre as janelas e verificar seus títulos com sucesso.

Resultado de aprovação verde em Selenium IDE após a verificação de ambos os títulos das janelas

Lembre-se sempre de que definir o alvo do selectWindow como “null” seleciona automaticamente a janela pai — neste caso, a janela onde o elemento “link=here” é encontrado.

Observação: O Facebook alterou o título da página desde a criação deste tutorial. Modifique o título esperado no script de acordo.

EQUIPAMENTOS Selenium Equivalentes em IDE para estes comandos

O FirefoxO plugin IDE foi descontinuado quando Firefox migrou para a arquitetura WebExtensions e para o Chrome atual, Firefox A extensão Edge renomeou a maioria dos comandos Selenese para um formato com espaços. O comportamento permanece inalterado, portanto, a tabela abaixo é tudo o que você precisa para interpretar os scripts acima em uma instalação atual.

Comando legado neste tutorial Atual Selenium comando IDE
loja loja
eco eco
armazenarTexto texto da loja
storeElementPresent armazenar elemento presente (ou afirmar que elemento presente)
assertAlert / verifyAlert alerta de ativação / alerta de verificação
selecionarOKNaPróximaConfirmação Selecione "OK" na próxima confirmação.
escolhaCancelOnNextConfirmação Selecione "cancelar" na próxima confirmação.
selecionarJanela (título como alvo) selecionar janela com identificador=${handle}

Vale a pena destacar duas diferenças. Os prompts, que não são abordados no artigo anterior, agora têm seus próprios comandos: Responda na próxima pergunta. planeja a resposta antes que o diálogo apareça, e Resposta do webdriver ao prompt visível digita em um prompt que já está aberto. E a troca de janelas não depende mais do título da página. Executar maçaneta da vitrine Primeiro, capture uma alça e depois passe-a. identificador=${seuIdentificador} para selecionar a janela. Essa alteração remove o modo de falha descrito na nota acima, onde um site simplesmente renomeia sua página e o script para de encontrar a janela. O oficial Selenium Site do projeto IDE Lista o conjunto completo de comandos atuais.

Perguntas Frequentes

Sim. `${myVariable}` e `${myvariable}` referem-se a duas variáveis ​​diferentes, e referenciar uma que nunca foi armazenada resulta em uma string vazia em vez de gerar um erro. Mantenha uma convenção de nomenclatura consistente em todo o conjunto de testes para evitar espaços em branco silenciosos.

Sim. A sintaxe ${ } é expandida em qualquer Target ou campo Valor, para que funcione dentro de um comando aberto, um XPath ou um seletor CSS. É assim que um script gravado se transforma em um script controlado por dados capturados anteriormente durante a execução.

Selenese não possui operadores matemáticos. Use o comando "execute script" com um pequeno JavaExpressão de script que lê a variável e retorna o resultado, armazenando esse valor de retorno. Lembre-se de que todo valor armazenado chega como uma string, então converta-o primeiro.

Trate-os como locais a um único teste. Depender de um valor definido por um teste anterior torna a ordem do conjunto de testes dependente e difícil de depurar; portanto, armazene o que um teste precisa dentro desse teste ou leia de um arquivo de dados no início.

Um prompt precisa de texto, não apenas de uma opção de botão. Execute a resposta no próximo prompt com a resposta no campo Valor antes do comando que o abre, ou use a resposta do WebDriver no prompt visível quando a caixa de diálogo já estiver na tela.

Ferramentas de aprendizado de máquina podem sugerir uma sequência de comandos a partir de uma descrição em linguagem natural de um cenário e indicar localizadores mais robustos do que os produzidos por um gravador. O reparo de localizadores assistido por IA também é útil, visto que um elemento renomeado é o motivo mais comum para um valor armazenado retornar vazio.

Sim. Exporte o teste para Java or PythonEm seguida, deixe o Copilot refatorar a lista de comandos simples em objetos de página e esperas reutilizáveis. Verifique o tratamento de alertas manualmente, pois o código gerado geralmente pressupõe uma caixa de diálogo visível que o IDE já fechou.

A seleção baseada no título torna-se ambígua e a janela errada pode ser escolhida. É exatamente por isso que a IDE atual prefere identificadores: capture um com `store window handle` logo após a janela abrir e, em seguida, troque com `handle=${yourHandle}`.

Resuma esta postagem com: