Concrete Logo
Hamburger button

Introdução ao Powershell – Módulo 1: Script

  • Blog
  • 8 de Maio de 2017
Share

Digamos que eu seja um Dev da página do Github e recebi uma demanda para atualizar o método de login de forma que: se alguém digitar o usuário e não digitar a senha essa pessoa receba um alerta e o login não seja efetuado. Preciso também de uma evidência do teste, e nesse caso vamos dar um print da tela. Para testar minha nova funcionalidade de login vou fazer diversos deployments em meu ambiente de LAB e automatizar o teste de login para que em todos os meus deployments eu receba uma evidência de comportamento.

A primeira coisa a fazer é criar um COM-Object do Internet Explorer. O controle de dotNET COM Objects é bem simples, fica assim:

Aqui então a variável $ie (no Posh, variáveis são iniciadas por “$”{algo que a MS gosta}) recebe um objeto InternetExplorer.Application. Todas as propriedades deste objeto são acessíveis via dotSourcing.

A segunda ação é navegar até a página do Github e aguardar que o COM esteja livre para uso.

Caso tenha curiosidade, é possível utilizar dotSourcing para receber o conteúdo da página, eg:

Com a página carregada, preciso identificar os objetos da tela e popular seus valores. Para isso, uso o mesmo trabalho acima com o recurso de dotSourcing.

Porém, a essa linha me traz o objeto e o que eu quero é selecionar e popular com um texto. Para isso uso outra função do Posh, a Select-Object com o switch -Unique, que faz desta uma seleção unitária.

Defino então a propriedade Value deste objeto com o meu login do Github.

Observem a evolução da seleção quando executada na console:

Cada uma dessas propriedades é um objeto que pode ser expandido e trabalhado. Digamos que eu queira saber o tipo deste objeto. Para isso basta selecionar a propriedade type.

Seguindo nossa POC: NÃO vamos digitar a senha e em seguida vamos dar um hit no botão login(que curiosamente na página do github se chama “commit”). Para isso, usamos algo parecido com o case acima, porém invocando o método “click” do próprio COM-Obj:

Se executarmos o código (tanto na ISE quanto na console), esse será o resultado:

Como evidência de meu teste, quero um print da tela de login com a mensagem. Existem formas mais simples de fazer isso, mas quero mostrar uma bem “baixo nível”, controlando propriedades do sistema e assemblies do dotNet. Fica assim:

Depois disso, quero somente exibir automaticamente o print salvo. Para tal, basta invocar o caminho do arquivo.

Nosso código completo fica assim:

No próximo post vamos fazer com que esse código não seja tão “straightforward”. Está vendo essas duas chamadas iguais às do sleep? Vamos transformá-las em uma função. Vê o hard coding? Vamos remover. Vê como poderíamos criar um handler para os elementos da página web? Vê como poderia transformar esse print numa função também? (…)? Tudo isso no próximo módulo, que você pode ver aqui!

Ah, se ficou alguma dúvida ou tem algo a dizer, aproveite os campos abaixo.

Curte a cultura DevOps e quer trabalhar em um time ágil e multidisciplinar? Clique aqui.