Para entender as extensões, vamos primeiro entender os três pilares do selênio IDE
- Ação: qual operação você está executando na tela da IU
- Avaliadores / Asserção: Qual verificação você faz nos dados que obtém da IU
- Estratégia do localizador: como podemos encontrar o elemento na IU.
Agora, o Selenium IDE tem uma biblioteca muito madura com muitas ações, afirmações / assessores e estratégias de localização.
Mas às vezes precisamos adicionar mais algumas funcionalidades a ele para os nossos requisitos de projeto. Nessa situação, podemos expandir esta biblioteca adicionando nossas extensões personalizadas. Essas extensões personalizadas são chamadas de 'Extensão de usuário'.
Por exemplo, precisamos de uma Ação que pode converter o texto em maiúsculas antes de preenchê-lo em um elemento da web. Você não pode encontrar esta ação na biblioteca de ações padrão. Nesse caso, você pode criar sua própria 'Extensão de usuário'. Neste tutorial, aprenderemos como criar uma extensão de usuário para converter texto em maiúsculas
Requisito para criar extensão de usuário Selenium:
Para criar uma extensão de usuário para o Selenium IDE, precisamos conhecer o conceito básico de JavaScript e o conceito de objeto de protótipo Java Script.
Para criar sua extensão de usuário, você precisa criar métodos de script Java e adicioná-los ao protótipo do objeto selenium e ao protótipo do objeto PageBot.
Como o Selenium IDE reconhece a extensão do usuário?
Depois de adicionar a extensão do usuário ao Selenium IDE quando iniciamos o Selenium IDE, todas essas extensões no protótipo javascript são carregadas e o Selenium IDE as reconhece por seus nomes.
Como criar uma extensão de usuário
Etapa 1) Ação - todas as ações são iniciadas por "do", ou seja, se a ação for para texto em maiúsculas, seu nome será doTextUpperCase. Quando adicionamos este método de ação no Selenium IDE, o Selenium IDE criará um método de espera para esta ação. Portanto, neste caso, quando criamos a ação doTextUpperCase , o Selenium IDE criará uma função de espera correspondente como TextUpperCaseAndWait . Pode aceitar dois parâmetros
Exemplo: ação de texto em maiúsculas
Selenium.prototype.doTextUpperCase = function (localizador, texto) {// Aqui, findElement é ele próprio capaz de lidar com todos os tipos de localizador (xpath, css, name, id, className), só precisamos passar o texto do localizadorelemento var = this.page (). findElement (localizador);// Crie o texto para digitartext = text.toUpperCase ();// Substitua o texto do elemento pelo novo textothis.page (). replaceText (elemento, texto);};
Etapa 2) Avaliadores / Asserção - Todos os avaliadores registrados no protótipo do objeto de selênio terão um prefixo
por "obter" ou "é" Ex. getValueFromCompoundTable, isValueFromCompoundTable. Ele pode aceitar dois parâmetros, um para o destino e outro para o campo de valor no caso de teste.
Para cada avaliador, haverá funções de verificação correspondentes prefixadas por "verificar", "afirmar" e o prefixo da função de espera por "waitFor"
Exemplo: Para avaliadores de letras maiúsculas
Selenium.prototype.assertTextUpperCase = function (localizador, texto) {// Todas as estratégias do localizador são tratadas automaticamente por "findElement"elemento var = this.page (). findElement (localizador);// Crie o texto para verificartext = text.toUpperCase ();// Obtenha o valor real do elementovar actualValue = element.value;// Certifique-se de que o valor real corresponde ao esperadoAssert.matches (expectValue, actualValue);};Selenium.prototype.isTextEqual = function (localizador, texto) {return this.getText (locator) .value === text;};Selenium.prototype.getTextValue = function (localizador, texto) {return this.getText (locator) .value;};
Etapa 3) Estratégia do localizador - se desejarmos criar nossa própria função para localizar um elemento, então
precisamos estender o protótipo do PageBot com uma função com o prefixo "locateElementBy".
Terá dois parâmetros, o primeiro será a string localizadora e o segundo será o documento
onde ele precisa ser pesquisado.
Exemplo: para localizador de texto em maiúsculas
// O "inDocument" é um documento que você está pesquisando.PageBot.prototype.locateElementByUpperCase = function (text, inDocument) {// Crie o texto a ser pesquisadovar valor esperado = text.toUpperCase ();// Faça um loop por todos os elementos, procurando aqueles que têm// um valor === nosso valor esperadovar allElements = inDocument.getElementsByTagName ("*");// Esta estrela '*' é um tipo de expressão regular que passará por todos os elementos (no HTML DOM, cada elemento certamente tem um nome de tag como , ,,