Instalando Ruby e Watir para automação | Fé no Caos
Home > Automação, Desenvolvimento, Testes, Watir > Instalando Ruby e Watir para automação

Instalando Ruby e Watir para automação

Primeiramente (e resumidamente), o que são essas coisas?

  1. Ruby é uma linguagem de programação que vem sido bastante adotada nos últimos anos, devido a uma série de características que não cabem a mim elencar aqui.
  2. Watir é uma biblioteca para a linguagem Ruby que permite interagir com o Internet Explorer, Firefox (a partir da versão 1.6, com a fusão da biblioteca FireWatir) e até o Safari (usando uma biblioteca derivada) para simular a experiência de navegação do usuário no sistema.

Apesar do desgosto que muitos de nós temos pelo Internet Explorer (alguns até pelo Windows), sabemos que tudo *deve* funcionar no Internet Explorer por dominar o mercado de browsers atualmente (por mais quanto tempo?).

Como instalar:

  1. Baixar o instalador para Windows aqui – está disponível um instalador que é só ficar apertando “Próximo” até acabar.
  2. Abrir uma janela do prompt de comando (Iniciar -> Executar -> cmd) e digitar “gem install watir -y”, sem as aspas. Após baixar a lista de bibliotecas e dependências, estaremos prontos para o primeiro exemplo de código.

O instalador do Ruby instala também o SciTE, um editor de código bem simples mas que faz o trabalho.

Todo guia de instalação do Ruby/Watir mostra como acessar o Google e fazer uma busca, bem simples assim. Que tal fazer um exemplo diferente, usando o site modinha de todo gadget freak muambeiro?

Abaixo veremos dois casos de teste para a funcionalidade “busca avançada” da loja Deal Extreme. Primeiramente, vamos procurar por sabres de luz e, depois, pela paz mundial. É só copiar e colar.

  1. require "rubygems"  
  2. require "watir"  
  3. require "test/unit"  
  4. require "test/unit/assertions"  
  5. include Test::Unit::Assertions  
  6.   
  7. class TC_DX_Search < Test::Unit::TestCase   
  8.   def setup  
  9.     #Abre o Internet Explorer  
  10.     @ie = Watir::IE.new  
  11.     @ie.set_fast_speed  
  12.   end  
  13.   
  14.   def test_adv_search  
  15.     #Abre o site da Deal Extreme  
  16.     @ie.goto "http://www.dealextreme.com/"  
  17.       
  18.     #Confere se estamos na página certa  
  19.     assert(@ie.title.include?("DealExtreme: Cool Gadgets at the Right Price"))  
  20.       
  21.     #Clica no link com o texto "advanced search"  
  22.     @ie.link(:text, /advanced search/).click  
  23.       
  24.     #Confere se estamos na página certa  
  25.     assert(@ie.title, "DealExtreme: Advanced Search")  
  26.       
  27.     #Preenche o campo de produto  
  28.     @ie.text_field(:id"txtAdvSearchTerm").set "Lightsabre LED"  
  29.       
  30.     #Seleciona a categoria do produto  
  31.     @ie.select_list(:id"searchCategory").select "Flashlights, Lasers"  
  32.       
  33.     #Marca a opção para buscar somente itens em estoque  
  34.     @ie.checkbox(:id"InStockOnly").set  
  35.       
  36.     #Clica no botão de busca  
  37.     @ie.button(:id"searchbutton").click  
  38.       
  39.     #Confere se retornou algum resultado  
  40.     assert(@ie.elements_by_xpath("//div[@id='olddiv']/div/h3/a").length > 0)  
  41.       
  42.     #Mostra a lista de itens retornados  
  43.     @ie.elements_by_xpath("//div[@id='olddiv']/div/h3/a").each do |result|  
  44.       puts result.innerText  
  45.     end  
  46.   end  
  47.     
  48.   def test_adv_search_no_results  
  49.     #Comentários no outro teste  
  50.     @ie.goto "http://www.dealextreme.com/"  
  51.     assert(@ie.title.include?("DealExtreme: Cool Gadgets at the Right Price"))  
  52.     @ie.link(:text, /advanced search/).click  
  53.     assert(@ie.title, "DealExtreme: Advanced Search")  
  54.     @ie.text_field(:id"txtAdvSearchTerm").set "The world peace"  
  55.     @ie.select_list(:id"searchCategory").select "- All Categories -"  
  56.     @ie.checkbox(:id"InStockOnly").set  
  57.     @ie.button(:id"searchbutton").click  
  58.       
  59.     #Não podemos comprar a paz mundial...  
  60.     assert(@ie.text.include?("No product was found relating to your search"))  
  61.   end  
  62. end  

Salve como demo.rb e rode o script (F5 no SciTE). Se tudo der certo, veremos o seguinte resultado:

Loaded suite demo
Started
Mini Lightsabre LED Keychain (4*AG3)
..
Finished in 68.328 seconds.

2 tests, 6 assertions, 0 failures, 0 errors

Imagino que o código seja autoexplicativo com a ajuda dos comentários. Em posts futuros veremos melhor sobre XPath, assertions, TestCase e mais.

Em caso de dúvidas, comente 🙂

  1. Stiksy
    May 7th, 2009 at 19:34 | #1

    Que coisa de miss… “paz mundial”… heheheh
    Mas é isso aí, comecei no Ruby/Watir a partir de exemplos desse tipo (mas obviamente usando o google), e acabei virando o “mais um” do post anterior (“eu e mais um colega continuamos usando os nossos scripts, mantendo-os atualizados quando possível, para aproveitar um belo café toda vez que tinhamos que validar as funcionalidades automatizadas”).

  2. christian
    May 11th, 2009 at 11:02 | #2

    tá, e ae, 4 dias e nenhuma atualização? que funcionarice publica é essa?
    o povo quer conteúdo novo.

    e Ruby e Watir pra mim é nome de dupla de forró universitário, tá ligado. Ruby porque é chique, e Watir porque é um Valdir mal registrado.

    abração meu, continua ae.

  3. October 19th, 2010 at 02:43 | #3

    News. Today’s Special Offer canada rx Lariam. No Prescription Required. Cheap drugs.

  4. October 21st, 2010 at 22:53 | #4

    News. Today’s Special Offer Sumycin. No Prescription Required. Cheap drugs.

  5. January 11th, 2021 at 18:34 | #5

    I loved your blog article. Really thank you! Much obliged. Kipp Peyton Theran

  1. No trackbacks yet.