Concrete Logo
Hamburger button

Manipulação de listas com Protractor

  • Blog
  • 4 de Janeiro de 2018

Você, como profissional de QA, já deve ter trabalhado com listas. Certo? Um exemplo clássico desse tipo de trabalho é uma tela de listagem de resultados que precisam ser validados, validação essa que é bastante trabalhosa. Uma das vantagens do Protractor (se você não sabe do que eu estou falando, clique aqui) são seus métodos de manipulação de listas do JavaScript, que facilitam muito quando temos esse tipo de cenário.

Vamos ver um exemplo? Veja a listagem abaixo:

Obs: Para visualizar essa listagem renderizada é só clicar aqui.

Vamos pegar esses resultados da seguinte forma:

Com a listagem em mãos, já podemos começar a trabalhar com esses dados. Para isso, vamos ver os principais métodos para manipulação de listas dos Protractor:

Filter

Bem, como o próprio nome sugere, com esse método é possível filtrarmos um resultado. Para utilizá-lo é bem simples, veja um exemplo:

O filter recebe dois parâmetros: o elemento (que nesse nosso exemplo serão as linhas da listagem, ou seja, as TRs da tabela) e o índice. Nesse exemplo ainda tem um detalhe interessante, um encadeamento de elementos, ou seja, fazemos uma “pesquisa” dentro de outro elemento.

A partir do elemento que recebemos como parâmetro (a TR) realizamos uma nova “pesquisa” para encontrarmos um elemento que tenha a diretiva ng-bind (que aprendemos como manipular neste post aqui). Em seguida, pegamos o valor deste elemento e comparamos com um resultado que esperamos. No fim, dentro do elemento encontrado, realizamos a ação de click.

Obs: Para deixar mais claro, deixei propositalmente um console.log do elemento que recebemos como parâmetro para entender o que está acontecendo. Nesse caso, o resultado desse log será o seguinte:

#1 Bulbasaur grama veneno

#6 Charizard fogo voador

#38 Ninetales fogo

#150 Mewtwo psiquico

#151 Mew psiquico

Get

O get é um método bem tranquilo de entender e provavelmente você já deve utilizá-lo. O get retorna um elemento pelo índice passado como parâmetro. Por exemplo:

Aqui estamos acessando o elemento na posição de número 4 da nossa listagem e em seguida utilizamos a técnica de encadeamento de elementos para encontrarmos o texto do nome do pokémon.

O resultado será Mewtwo

First

Similar ao get, mas retorna o primeiro item da lista.

O resultado será Bulbasaur

Last

Retorna o último item  da lista.

O resultado será Mew

EACH

Esse método é utilizado quando queremos iterar em uma lista:

O resultado será:

0 ‘Bulbasaur’

1 ‘Charizard’

2 ‘Ninetales’

3 ‘Mewtwo’

4 ‘Mew’

MAP

Com esse método podemos montar um objeto chave-valor, assim:

E poderíamos validar esse resultado no nosso teste dessa forma:

REDUCE

O reduce é utilizado quando queremos obter um valor acumulado ou fazer algum tipo de operação com todos os elementos, como concatenar os valores da lista. No exemplo, o reduce recebe como parâmetro uma função de callback com o valor acumulado e o elemento (que no nosso caso é a TR):

O resultado do console.log será o seguinte:

acc: Todos Pokemons:  txt: Bulbasaur

acc: Todos Pokemons: , Bulbasaur txt: Charizard

acc: Todos Pokemons: , Bulbasaur, Charizard txt: Ninetales

acc: Todos Pokemons: , Bulbasaur, Charizard, Ninetales txt: Mewtwo

acc: Todos Pokemons: , Bulbasaur, Charizard, Ninetales, Mewtwo txt: Mew

O Protractor oferece muitas opções para manipular listas, como pudemos observar. Com ele, é possível economizar muito trabalho! Saber em que situação utilizar cada um desses métodos é muito importante e ajuda muito o dia-a-dia. Portanto, entenda bem quando e como podemos utilizá-lo, isso deve te poupar algumas dores de cabeça.

Até a próxima. 😉

Trabalha com QA e quer fazer parte do nosso time? Clique aqui.