Skip to content

Commit 84d8bdd

Browse files
committed
atualizado artigo sobre Selenium - Mario Chaves
1 parent cea404b commit 84d8bdd

File tree

1 file changed

+42
-25
lines changed

1 file changed

+42
-25
lines changed

content/introducao_a_testes_funcionais_com_selenium_e_python.rst

Lines changed: 42 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ Introdução a testes funcionais com Selenium e Python
77
:slug: introducao-a-testes-funcionais-com-selenium-e-python
88
:author: Mário Chaves
99
10+
:github: macndesign
11+
:bitbucket: macndesign
12+
:twitter: macndesign
13+
:linkedin: macndesign
14+
:facebook: macndesign
15+
:site: http://www.xsd.com.br/blog/
1016

1117

1218

@@ -22,10 +28,10 @@ Porquê usar a linguagem Python nos testes funcionais?
2228
Como sabemos os testes funcionais são em sua grande parte desenvolvidos por Analistas de Testes e/ou Testadores.
2329
Para que se tenha uma manutenção mais rápida e eficaz a medida que o código do projeto vai crescendo e ganhando mais funcionalidades, é interessante que os testes estejam coesos e de fácil entendimento. `IMHO <http://pt.wiktionary.org/wiki/IMHO>`_ Python é a linguagem que deixa seu código mais elegante, limpo e entendível.
2430

25-
*"Python é uma linguagem de programação de alto nível , interpretada, imperativa, orientada a objetos, funcional,
31+
*"Python é uma linguagem de programação de alto nível , interpretada, imperativa, orientada a objetos, funcional,
2632
de tipagem dinâmica e forte."* `Wikipedia <http://pt.wikipedia.org/wiki/Python>`_
2733

28-
Em uma rápida comparação de verbosidade entre Python e Java com o tão criticado "Hello, World!", podemos notar o
34+
Em uma rápida comparação de verbosidade entre Python e Java com o tão criticado "Hello, World!", podemos notar o
2935
que quero dizer quando citei *"IMHO Python é a linguagem que deixa seu código mais elegante, limpo e entendível"*.
3036

3137

@@ -50,7 +56,7 @@ Exemplo em Python 2.x
5056
5157
5258
53-
Isso mesmo, os dois exemplos fazem a mesma coisa, porém, o exemplo em Java tem 104 caracteres enquanto o exemplo
59+
Isso mesmo, os dois exemplos fazem a mesma coisa, porém, o exemplo em Java tem 104 caracteres enquanto o exemplo
5460
em Python possui apenas 21 caracteres.
5561

5662
Mas, voltando ao que interessa, vamos ao passo-a-passo de como configurar seu ambiente e depois testar executando algo como exemplo.
@@ -60,7 +66,7 @@ Mas, voltando ao que interessa, vamos ao passo-a-passo de como configurar seu am
6066
Montando o ambiente
6167
===================
6268

63-
Supondo que você usa Windows e não tem nada do que vamos precisar instalado, faça o download dos
69+
Supondo que você usa Windows e não tem nada do que vamos precisar instalado, faça o download dos
6470
seguintes itens:
6571

6672
Python 2.7.6 - https://www.python.org/downloads/
@@ -73,7 +79,7 @@ seguintes itens:
7379
*Navegador Web mais recomendado para o uso do Selenium e onde será instalado o plugin SeleniumIDE*
7480

7581
PhantomJS v1.9 - https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-windows.zip
76-
*Navegador Headless que possibilita a execução dos testes em background, sem a necessidade de executar
82+
*Navegador Headless que possibilita a execução dos testes em background, sem a necessidade de executar
7783
toda a interface gráfica do navegador*
7884

7985

@@ -143,30 +149,35 @@ Biblioteca Selenium para o Python
143149
Criando um teste simples com a famosa Selenium IDE lo/
144150
======================================================
145151

146-
Após instalar a Selenium IDE dentro do Firefox e reiniciar o navegador, clique no ícone da ferramenta que está no
152+
Após instalar a Selenium IDE dentro do Firefox e reiniciar o navegador, clique no ícone da ferramenta que está no
147153
canto superior direito do Navegador.
148154

149155
.. image:: images/test-ff-sel-btn.png
156+
:alt: Botão para iniciar a Selenium IDE
150157

151158
Note que na Selenium IDE, a opção de gravar já vem selecionada por padrão.
152159

153160
.. image:: images/test-ff-sel-gravar-ligado.png
161+
:alt: Botão de gravar ligado
154162

155163
E para nossa alegria, a URL do site atual que está em nosso Firefox, já está definida no campo "URL Base" da Selenium IDE.
156164

157165
Cliquei no link "Como apoiar o IFIC" e acessei a seguinte página.
158166

159167
.. image:: images/test-ff-sel-clicar-no-link.png
168+
:alt: Clicando no link
160169

161170
Ao ver o que está acontecendo na Selenium IDE, notamos que ela está gravando tudo o que está acontecendo no navegador.
162171

163172
.. image:: images/test-ff-sel-initial-view.png
173+
:alt: Visualização inicial
164174

165175
Retorno ao navegador e faço um simples assert para ver se ao entrar na página o título H1 está correto.
166176

167177
.. image:: images/test-ff-sel-assert-h1.png
178+
:alt: Assert no H1
168179

169-
Veja como é simples ver as propriedades que podem ser usadas para certificar que você realmente está na tela correta e
180+
Veja como é simples ver as propriedades que podem ser usadas para certificar que você realmente está na tela correta e
170181
verificar se os textos estão corretamente aplicados em seus devidos lugares.
171182

172183
Nesse exemplo eu verifico se o título H1 da página contém "Como Apoiar o IFIC", para isso foi necessário:
@@ -179,17 +190,19 @@ Nesse exemplo eu verifico se o título H1 da página contém "Como Apoiar o IFIC
179190
Agora veja o que a Selenium IDE gravou:
180191

181192
.. image:: images/test-ff-sel-assert-h1-view.png
193+
:alt: Vendo o resultado do assert no H1
182194

183195
Como era de se esperar, apenas o que você fez no navegador ;)
184196

185-
*Note que se você já for um usuário experiente da Selenium IDE, souber usar os seletores e conhecer bem o código HTML
197+
*Note que se você já for um usuário experiente da Selenium IDE, souber usar os seletores e conhecer bem o código HTML
186198
da página, você poderá escrever todo o seu código na própria Selenium IDE e depois executar.*
187199

188200
Para executar o teste criado, basta clicar no botão "Play entire test suite" como na imagem abaixo:
189201

190202
.. image:: images/test-ff-sel-play-test.png
203+
:alt: Botão para executar os testes
191204

192-
Note que o teste foi executado com sucesso, pois está tudo verdinho :) . Logo abaixo existem algumas mensagens
205+
Note que o teste foi executado com sucesso, pois está tudo verdinho :) . Logo abaixo existem algumas mensagens
193206
na sequência que foram executadas.
194207

195208

@@ -200,33 +213,35 @@ Salvando/Exportando e executando os testes
200213
Selenium IDE
201214
------------
202215

203-
Ao concluir seu teste você tem a opção de salvar e então executar futuramente para verificar
216+
Ao concluir seu teste você tem a opção de salvar e então executar futuramente para verificar
204217
se o sistema continua funcionando como deveria.
205218

206219
Para salvar é muito simples, se estiver no Windows ou Linux, basta dar um Ctrl+S e no Mac Command+S, escolher
207220
uma pasta e clicar em Salvar.
208221

209222
.. image:: images/test-ff-sel-save.png
223+
:alt: Salvando teste
210224

211-
Sinceramente, se você sempre quiser executar seus testes usando o Mozilla Firefox eu aconselho usar a própria
212-
Selenium IDE para esse propósito, pois com ela você salva seus testes em HTML e os executa tranquilamente com
213-
opção de rodar todo um Test Case de uma vez. Observe que após salvar o teste ele fica disponível na coluna
225+
Sinceramente, se você sempre quiser executar seus testes usando o Mozilla Firefox eu aconselho usar a própria
226+
Selenium IDE para esse propósito, pois com ela você salva seus testes em HTML e os executa tranquilamente com
227+
opção de rodar todo um Test Case de uma vez. Observe que após salvar o teste ele fica disponível na coluna
214228
"Test Case" da Selenium IDE e você pode ir adicionando os demais testes a essa coluna para que sejam todos executados.
215229

216230

217231
Exportando para uma linguagem de programação
218232
--------------------------------------------
219233

220-
Na Selenium IDE existe a opção de exportar seu teste para várias linguagens de programação como: Ruby, Python,
234+
Na Selenium IDE existe a opção de exportar seu teste para várias linguagens de programação como: Ruby, Python,
221235
Java e C#.
222236

223-
Exportar seu teste para uma linguagem de programação pode ser bem útil para o caso de integrar seu teste
224-
ao código de teste desenvolvido pelos programadores já que os testes exportados pela Selenium IDE são
237+
Exportar seu teste para uma linguagem de programação pode ser bem útil para o caso de integrar seu teste
238+
ao código de teste desenvolvido pelos programadores já que os testes exportados pela Selenium IDE são
225239
codificados utilizando a lib unittest, ou seja, na forma de testes unitários.
226240

227241
A imagem abaixo mostra como exportar o teste para uma das linguagens disponíveis:
228242

229243
.. image:: images/test-ff-sel-export-lang.png
244+
:alt: Exportando o teste
230245

231246
No caso, Python 2 / unittest / Webdriver, mas o teste poderia ser exportado para qualquer outra linguagem disponível.
232247
Clique nesse item e salve na pasta que desejar com um nome sucinto e seguido da extensão .py (por exemplo: test_como_apoiar.py)
@@ -251,23 +266,23 @@ Veja abaixo o código gerado pela exportação do teste para Python (48 linhas):
251266
self.base_url = "http://www.ific.com.br/"
252267
self.verificationErrors = []
253268
self.accept_next_alert = True
254-
269+
255270
def test_como_apoiar(self):
256271
driver = self.driver
257272
driver.get(self.base_url + "/")
258273
driver.find_element_by_link_text("Como apoiar o IFIC").click()
259274
self.assertEqual("Como Apoiar o IFIC", driver.find_element_by_css_selector("h1").text)
260-
275+
261276
def is_element_present(self, how, what):
262277
try: self.driver.find_element(by=how, value=what)
263278
except NoSuchElementException, e: return False
264279
return True
265-
280+
266281
def is_alert_present(self):
267282
try: self.driver.switch_to_alert()
268283
except NoAlertPresentException, e: return False
269284
return True
270-
285+
271286
def close_alert_and_get_its_text(self):
272287
try:
273288
alert = self.driver.switch_to_alert()
@@ -278,7 +293,7 @@ Veja abaixo o código gerado pela exportação do teste para Python (48 linhas):
278293
alert.dismiss()
279294
return alert_text
280295
finally: self.accept_next_alert = True
281-
296+
282297
def tearDown(self):
283298
self.driver.quit()
284299
self.assertEqual([], self.verificationErrors)
@@ -367,16 +382,16 @@ Veja o mesmo código gerado pela exportação do teste para Java (73 linhas):
367382
}
368383
369384
370-
Tendo a versão do teste escrita em Python posso simplesmente dar um clique duplo sobre o ícone do arquivo
371-
test_como_apoiar.py que instantaneamente é aberto o navegador (Mozilla Firefox) e executado todo teste
385+
Tendo a versão do teste escrita em Python posso simplesmente dar um clique duplo sobre o ícone do arquivo
386+
test_como_apoiar.py que instantaneamente é aberto o navegador (Mozilla Firefox) e executado todo teste
372387
ao vivo.
373388

374389
Mas como já disse, se for para rodar o teste no Firefox, é melhor executar pela própria Selenium IDE.
375390

376391
É por isso que agora vamos saber porquê instalamos o PhantomJS.
377392

378-
Com o PhantomJS temos a possibilidade de executar o browser em "Background", podemos chamar de modo "Headless",
379-
isso faz com que possamos executar toda a nossa suíte de testes sem precisar ligar o Mozilla Firefox e todo o
393+
Com o PhantomJS temos a possibilidade de executar o browser em "Background", podemos chamar de modo "Headless",
394+
isso faz com que possamos executar toda a nossa suíte de testes sem precisar ligar o Mozilla Firefox e todo o
380395
peso de sua interface gráfica, para isso vamos alterar a primeira linha do método setUp() e trocar o webdriver Firefox para PhantomJS:
381396

382397
.. code-block:: python
@@ -394,6 +409,7 @@ Então vamos abrir o terminal, console ou cmd, como queira chamar, e navegar at
394409
O arquivo é executado como na imagem abaixo:
395410

396411
.. image:: images/test-ff-change-webdriver.png
412+
:alt: Teste executado com um webdriver headless
397413

398414
Bem amigos, a leitura foi uma breve descrição sobre os seguintes tópicos:
399415

@@ -412,3 +428,4 @@ Qualquer dúvida pode entrar em contato:
412428
* Google + `plus.google.com/+MárioChaves81 <https://plus.google.com/+M%C3%A1rioChaves81>`_
413429

414430
Grande abraço!
431+

0 commit comments

Comments
 (0)