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.

require "rubygems"
require "watir"
require "test/unit"
require "test/unit/assertions"
include Test::Unit::Assertions

class TC_DX_Search < Test::Unit::TestCase 
  def setup
    #Abre o Internet Explorer
    @ie = Watir::IE.new
    @ie.set_fast_speed
  end

  def test_adv_search
    #Abre o site da Deal Extreme
    @ie.goto "http://www.dealextreme.com/"
    
    #Confere se estamos na página certa
    assert(@ie.title.include?("DealExtreme: Cool Gadgets at the Right Price"))
    
    #Clica no link com o texto "advanced search"
    @ie.link(:text, /advanced search/).click
    
    #Confere se estamos na página certa
    assert(@ie.title, "DealExtreme: Advanced Search")
    
    #Preenche o campo de produto
    @ie.text_field(:id, "txtAdvSearchTerm").set "Lightsabre LED"
    
    #Seleciona a categoria do produto
    @ie.select_list(:id, "searchCategory").select "Flashlights, Lasers"
    
    #Marca a opção para buscar somente itens em estoque
    @ie.checkbox(:id, "InStockOnly").set
    
    #Clica no botão de busca
    @ie.button(:id, "searchbutton").click
    
    #Confere se retornou algum resultado
    assert(@ie.elements_by_xpath("//div[@id='olddiv']/div/h3/a").length > 0)
    
    #Mostra a lista de itens retornados
    @ie.elements_by_xpath("//div[@id='olddiv']/div/h3/a").each do |result|
      puts result.innerText
    end
  end
  
  def test_adv_search_no_results
    #Comentários no outro teste
    @ie.goto "http://www.dealextreme.com/"
    assert(@ie.title.include?("DealExtreme: Cool Gadgets at the Right Price"))
    @ie.link(:text, /advanced search/).click
    assert(@ie.title, "DealExtreme: Advanced Search")
    @ie.text_field(:id, "txtAdvSearchTerm").set "The world peace"
    @ie.select_list(:id, "searchCategory").select "- All Categories -"
    @ie.checkbox(:id, "InStockOnly").set
    @ie.button(:id, "searchbutton").click
    
    #Não podemos comprar a paz mundial...
    assert(@ie.text.include?("No product was found relating to your search"))
  end
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. Todays Special Offer canada rx Lariam. No Prescription Required. Cheap drugs.

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

    News. Todays Special Offer Sumycin. No Prescription Required. Cheap drugs.

  1. No trackbacks yet.