Post on 11-Jun-2015
description
Meu objetivo aqui:
Falar rapidamente de um problema que resolvemos usando a ferramenta watir-
webdriver em 4 partes.
Cielo"Responsável pelo credenciamento de estabelecimentos comerciais, e pela
captura, transmissão, processamento e liquidação financeira das transações realizadas com cartões de crédito e débito"
Imagens: http://www.x-jetpacks.com/wp-content/uploads/death-star.png http://kldsuportville.com.br/index/wp-content/uploads/2013/12/cartao.png
Cielo"Responsável pelo credenciamento de estabelecimentos comerciais, e pela
captura, transmissão, processamento e liquidação financeira das transações realizadas com cartões de crédito e débito"
Imagens: http://www.x-jetpacks.com/wp-content/uploads/death-star.png http://kldsuportville.com.br/index/wp-content/uploads/2013/12/cartao.png
b = Watir::Browser.new!b.goto ‘http://www.cielo.com.br'!form = b.form id: ‘consulta-estabelecimento'
b = Watir::Browser.new!b.goto ‘http://www.cielo.com.br'!form = b.form id: ‘consulta-estabelecimento’!inputs = form.inputs(type: ‘text')
b = Watir::Browser.new!b.goto ‘http://www.cielo.com.br'!form = b.form id: ‘consulta-estabelecimento’!inputs = form.inputs(type: ‘text’)!inputs.first.set(‘aww yeah!’)
aww yeah!
b = Watir::Browser.new!b.goto ‘http://www.cielo.com.br'!form = b.form id: ‘consulta-estabelecimento’!inputs = form.inputs(type: ‘text’)!inputs.first.set(‘aww yeah!’)!inputs.last.set(‘mah oee!’)!
mah oee!
aww yeah!
b = Watir::Browser.new!b.goto ‘http://www.cielo.com.br'!form = b.form id: ‘consulta-estabelecimento’!inputs = form.inputs(type: ‘text’)!inputs.first.set(‘aww yeah!’)!inputs.last.set(‘mah oee!’)!form.input(type: ‘submit’).click!
mah oee!
aww yeah!
b = Watir::Browser.new!b.goto ‘http://www.cielo.com.br'!form = b.form id: ‘consulta-estabelecimento’!inputs = form.inputs(type: ‘text’)!inputs.first.set(‘aww yeah!’)!inputs.last.set(‘mah oee!’)!form.input(type: ‘submit’).click!
E tem muito mais:!• Executa javascript lindamente (me salvou do teclado
virtual) • Acessa frameceptions facilmente • Faz drag and drop • Suporta chamadas ajax com “Wait until present” ou
“Wait While Present” • Tem comandos do tipo “tables”, “as”, “lis”, “uls”,
enfim, o negócio vai muito naturalmente! • Read the docs: http://rubydoc.info/gems/watir-
webdriver/frames
Fizemos um design básico:
Page!• Realiza as interações
com as diferentes páginas (cada page object sabe da sua página)
Fizemos um design básico:
Page!• Realiza as interações
com as diferentes páginas (cada page object sabe da sua página)
Parser!• Extrai e limpa os
valores extraídos das páginas, transformando-os em objetos nativos (Hashes e Arrays na maioria)
Fizemos um design básico:
Page!• Realiza as interações
com as diferentes páginas (cada page object sabe da sua página)
Parser!• Extrai e limpa os
valores extraídos das páginas, transformando-os em objetos nativos (Hashes e Arrays na maioria)
Exporter!• Recebe os dados em
objetos nativos e exporta para excel
Task
Fizemos um design básico:
Page!• Realiza as interações
com as diferentes páginas (cada page object sabe da sua página)
Parser!• Extrai e limpa os
valores extraídos das páginas, transformando-os em objetos nativos (Hashes e Arrays na maioria)
Exporter!• Recebe os dados em
objetos nativos e exporta para excel
Criamos mais um objeto no nosso design:
NavigationStack!• Ordena e executa a navegação
programada na task. • Em caso de erro na execução, volta
os passos necessários (browser.back) e tenta novamente até o fluxo programado funcionar!
O sistema rodou por um tempo até nosso CFO descobrir um serviço
da cielo chamado EDI que exporta os dados sozinho :)
Obrigado!
Lucas Prim!CTO & Co-Founder @ Kimitachi !
lucas.prim@gmail.com @lucasprim
require 'watir-webdriver'
browser = Watir::Browser.new(‘chrome')browser.goto('http://news.ycombinator.com')
require 'watir-webdriver'
browser = Watir::Browser.new(‘chrome')browser.goto('http://news.ycombinator.com')
main_table = browser.tables.first
require 'watir-webdriver'
browser = Watir::Browser.new(‘chrome')browser.goto('http://news.ycombinator.com')
main_table = browser.tables.firstnews_list_section = main_table.trs[3]news_table = news_list_section.tables.first
require 'watir-webdriver'
browser = Watir::Browser.new(‘chrome')browser.goto('http://news.ycombinator.com')
main_table = browser.tables.firstnews_list_section = main_table.trs[3]news_table = news_list_section.tables.first
news = news_table.trs.map do |item|content = item.text.split("\n")content[1]
end.compact
require 'watir-webdriver'
browser = Watir::Browser.new(‘chrome')browser.goto('http://news.ycombinator.com')
main_table = browser.tables.firstnews_list_section = main_table.trs[3]news_table = news_list_section.tables.first
news = news_table.trs.map do |item|content = item.text.split("\n")content[1]
end.compact
browser.close
Obrigado!
Lucas Prim!CTO & Co-Founder @ Kimitachi !
lucas.prim@gmail.com @lucasprim