Instalando Ruby e Watir para automação
Primeiramente (e resumidamente), o que são essas coisas?
- 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.
- 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:
- Baixar o instalador para Windows aqui – está disponÃvel um instalador que é só ficar apertando “Próximo” até acabar.
- 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
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”).
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.
News. Today’s Special Offer canada rx Lariam. No Prescription Required. Cheap drugs.
News. Today’s Special Offer Sumycin. No Prescription Required. Cheap drugs.
I loved your blog article. Really thank you! Much obliged. Kipp Peyton Theran