Posts com a tag ‘ie’

Autenticação HTTP básica e Selenium

14 de maio de 2010

Recentemente, um dos leitores do blog me perguntou como automatizar um teste quando o sistema tem uma autenticação HTTP básica e achei interessante compartilhar com vocês.

Exemplo de autenticação HTTP básica

Não há nada específico para o Selenium, mas sim sobre o protocolo HTTP.
Segundo a RFC 1738 que descreve como devem ser escritas as URLs, você pode definir o usuário e senha diretamente no endereço que deseja acessar. Exemplo:

http://usuario:senha@www.seusite.com/home.html

Aparentemente, isso deveria funcionar para todos os browsers, já que é um padrão. Mas no Internet Explorer não vai funcionar. Isso porque o Windows desabilita essa autenticação por medidas de segurança. Mas como para testar no IE você tem que subir o Selenium Remote Control, isso não será um problema já que o próprio RC altera o registro do Windows habilitando essa funcionalidade. Para maiores informações você pode dar uma olhada aqui.

Portanto, no seu teste automatizado, você teria que usar o comando open e alterar a URL desejada para conter os dados de acesso:

open | http://usuario:senha@www.seusite.com/home.html

Até a próxima :)

Como rodar os testes do Selenium no IE ou em outro browser?

20 de janeiro de 2009

Até agora falei mais sobre os comandos do Selenium, e os exemplos que dei eram pra ser testados pela IDE. Como a IDE ainda só existe para o Firefox, os testes até então eram pra ser executados somente no Firefox. Mas e se você quiser testar no Internet Explorer 6? ou no 7? Ou no Safari? Ou até mesmo no browser mais recente do Google?

Aí que entra o servidor do Selenium. Você sobe um e escolhe em qual browser quer testar.

No site e na documentação do Selenium, o servidor é chamado de Selenium Remote Control, ou para os mais íntimos somente RC. Para baixar o servidor acesse http://seleniumhq.org/download. A última versão disponível é a 1.0 beta 2. Dentro do arquivo zipado, você vai encontrar uma pasta com o nome selenium-server que corresponde ao próprio servidor do selenium. As outras pastas com o nome client-driver correspondem às bibliotecas de cada linguagem disponível para comunicar com o servidor, que são:

  • Java
  • Ruby
  • Python
  • Php
  • Perl
  • .Net

Não vou me aprofundar muito sobre essas bibliotecas, mas gerar um teste em uma determinada linguagem é algo relativamente simples. A IDE tem uma opção de exportar os testes. Basta abrir um teste, clicar em file, export test case as, e escolher a linguagem desejada.

Mas não se assuste, você pode rodar o seu teste em outro browser sem a necessidade de exportá-lo para uma linguagem.

O pré-requisito para isso é ter o Java instalado na sua máquina.

O primeiro passo então é salvar o seu teste da IDE em uma determinada pasta. Só por curiosidade, na documentação do Selenium, um teste salvo pela IDE está no formato selenese. Após isso, entre no console (shell, cygwin, DOS) e vá até a pasta onde encontra-se o servidor do Selenium. Você vai ter que executar o seguinte comando:

java -jar selenium-server.jar -htmlSuite <browser> <startURL> <suiteFile> <resultFile>

Vou explicar os parâmetros desse comando de trás pra frente.

O parâmetro resultFile indica o arquivo em que será gerado o relatório do teste.

O suiteFile indica o seu arquivo selenese gerado pela IDE. O único problema é que ele tem que ser um suite e não um test case.

O parâmetro startURL indica a url do site a ser testado.

E por último nessa lista, mas o primeiro parâmetro do comando, está o browser. O valor que você tem que colocar nesse parâmetro, pode ser:

  • *firefox
  • *chrome
  • *iexplore
  • *iehta
  • *safari
  • *opera
  • *googlechrome

Detalhe é que o asterisco faz parte dos valores. O valor *chrome chama o próprio Firefox enquanto que o *iehta chama o IE. Mas há uma leve diferença entre eles. O *chrome e o *iehta são cross-domain, o que faz com que o Selenium não tenha problemas caso o fluxo do seu teste seja redirecionado para outro domínio. Eles também dão mais poder para o Selenium não se esbarrar em problemas de segurança dos browsers.

Na próxima versão do Selenium, *firefox será sinônimo para *chrome e assim o mesmo para *iexplore. Portanto, dê preferência para utilizar *chrome e *iehta.

Ao passar uma dessas strings para o servidor do Selenium, ele irá em busca do executável do browser procurando pelo path default de instalação. No Windows XP, por exemplo, passando como parâmetro o valor *chrome, o Selenium vai procurar por “C:\Program Files\Mozilla Firefox\firefox.exe”.

Mas e se você instalou o Firefox em outro path, sem ser o default? É simples, basta indicar a string do browser seguida do path completo para o executável, por exemplo “*chrome c:\firefox\firefox.exe”. As aspas duplas aqui não estão por acaso, você vai ter que colocá-las quando quiser especificar o path. Esse esquema de passar onde browser está instalado é muito útil quando você tem mais de uma versão do mesmo browser instalada na máquina.

A lista dos browsers suportados você pode encontrar aqui.

Caso você queira testar em um browser não suportado, o Selenium aceita a string “*custom” que funciona como um coringa.

Criei um arquivo de teste para que você possa comprovar que tudo isso funciona, ehehe. Você vai precisar baixar dois arquivos: o suite e o test-case. Salve-os no C: e depois rode o seguinte comando:

java -jar selenium-server.jar -htmlSuite *iehta http://www.seuenium.com.br c:\teste-suite.html c:\result.html

Depois abra o arquivo result.html para conferir o resultado da execução:

Bom, é isso aí galera… Qualquer dúvida só perguntar.
:)