Testes de usabilidade com Selenium – Instalação

Testes de usabilidade são muito importantes para aplicações web, por isso vou escrever alguns tutoriais a respeito do Selenium, que é uma suite de aplicativos para testes.

Antes de qualquer coisa, vamos instalar o Selenium no Ubuntu. A maior parte do processo será igual para Windows e Mac já que optei por utilizar o PIP.  Se você usa Windows, precisa instalar Python antes. Confira o python.org para como proceder.

1- Instalando Pip:

Abra o Terminal, e baixe o script get-pip.py via curl.

curl -O https://bootstrap.pypa.io/get-pip.py

Execute o script. Obs: Se você executar o script com a flag –user, o pip será instalado somente na pasta do usuário, em .local/bin.

python get-pip.py --user

O resultado será exibido assim:

Collecting pip
	Downloading pip-8.1.2-py2.py3-none-any.whl (1.2MB)
Collecting setuptools
	Downloading setuptools-26.1.1-py2.py3-none-any.whl (464kB)
Collecting wheel
	Downloading wheel-0.29.0-py2.py3-none-any.whl (66kB)
Installing collected packages: pip, setuptools, wheel Successfully installed pip setuptools wheel

Depois da instalação, precisamos colocar a pasta .local/bin na variável de ambiente PATH. Você pode usar os arquivos .profile ou .bashrc. Como editor eu gosto do nano, então (Obs: no Mac eu usaria .profile):

nano ~/.bashrc

Na última linha nós adicionamos:

export PATH=~/.local/bin:$PATH

Caso você não saiba, esse comando adicionará a pasta .local/bin à existente varável PATH. De agora em diante, toda vez que você digitar no Terminal, o sistema verificará se seu comando corresponde aos executáveis da pasta .local/bin. E esse é o caso do PIP, o comando pip executará o arquivo pip.py que está nesta pasta. Salve o arquivo. Recarregue o PATH digitando:

source ~/.bashrc

Para testar digite:

pip -v

Se tudo deu certo, as instruções de ajuda do comando pip aparecerão na tela! 🙂

2- Agora instalamos o Selenium.

Eu gosto da flag –user para manter a instalação local. A flag -U, irá executar um update de repositório do pip:

pip install -U selenium --user

Após a instalação pracisamos instalar as interfaces dos WebDrivers para seu navegador escolhido. Para desenvolvimento eu uso o Chrome, logo demonstrarei o processo usando a interface para o Chrome, porém os passos serão os mesmos para os outros navegadores. Ao fim do post, tem links para as interfaces dos demais navgadores.

2.1- Baixando sua interface.

Para o Chrome vamos para o link https://sites.google.com/a/chromium.org/chromedriver/downloads e baixamos o release mais recente. Será um arquivo zip. Descompactamos o mesmo, e colocamos o executável em qualquer pasta do sistema, desde que o destino esteja listado na varável PATH. Eu coloco meus arquivos na pasta .local/bin, a mesma onde o pip está instalado. Como o nome sugere, a pasta serve para armazenar binários.

Uma vez os executáveis no lugar correto, a instalação está concluída!

3- Let’s test.

Vamos testar no console interativo do Python:

python

Tente o seguinte:

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('http://google.com')

Assim que você definir a variável browser, uma janela do Chrome ira saltar na tela. Não se preocupe! É exatamente o que queremos! O comando get() fará a janela do Chrome acessar a página do Google!

Perfeito! Conseguimos nosso primeiro passo. Agora conseguimos controlar nosso navegador via script, e assim automatizar nossos testes.

Nos próximos posts veremos como criar os testes.

REFERÊNCIAS:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-install-linux.html

https://www.rosehosting.com/blog/how-to-install-pip-on-ubuntu-16-04/

https://pypi.python.org/pypi/selenium

https://docs.python.org/3/library/unittest.html

unittest introduction

http://docs.python-guide.org/en/latest/writing/tests/

https://jeffknupp.com/blog/2013/12/09/improve-your-python-understanding-unit-testing/

http://www.seleniumhq.org/docs/03_webdriver.jsp

 

INTERFACES de WEBDRIVERS:

Chrome: https://sites.google.com/a/chromium.org/chromedriver/downloads

Firefox: https://github.com/mozilla/geckodriver/releases

Safari: https://webkit.org/blog/6900/webdriver-support-in-safari-10/

Edge: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

 

Youtube:

Browser elements & Operations: https://youtu.be/ph3NJm4Z7m4?t=21m31s

Selenium Methods and Functions: https://youtu.be/ph3NJm4Z7m4?t=32m1s

 

Wearables :: Circuitos iniciais e programas

Nesse fim de semana gastei umas horas rascunhando um circuito, e códigos, para um produto wearable que, usando os materiais que tinha para o projeto, pudesse se comunicar com um computador, e daí gerar alguma interação entre a peça de roupa e um ambiente.

O objetivo do circuito era capturar dados de movimentação, via acelerômetro (MPU-6050), e transmiti-los via bluetooth (HC-05). O resultado ficou assim:

Curcuito Rascunho

Ficou feio, é verdade. Não usei a protoboard, porque o objetivo é que esse equipamento seja instalado em uma vestimenta feita à mão, logo, tem que ser o menor possível, e preciso treinar como os materiais que tenho se comportam quando manipulados à mão.

Tanto código, como ligações, fiz uma combinação das referências que seguem:

Vale mencionar que, no caso do HC-05, fiz as ligações do modo escravo, e no código, combinei as duas versões contidas no link. Não é porquê o HC-05 está ligado como escravo que ele não pode enviar e receber dados: Não confunda!

Fiz testes de recebimento de dados usando Python, e Processing. Nesse ponto é necessário lembrar de “alinhar” o envio e o recebimento dos dados. Serial.print e Serial.write, enviam dados de formas diferentes, e isso impacta no recebimento do outro lado. Python recebe os dados como bytes, e a decodificação tem seus detalhes a serem observados.

O sistema funcionou bem, quando ligado ao computador. Só na bateria, ele não funcionou. Ainda preciso calcular o porquê. Se foi falta de voltagem, ou amperagem.

 

Boas referências para soluções de problemas:

http://www.freetronics.com.au/pages/bluetooth-pairing-guide#.V2bXiVcUnIo

https://github.com/rwaldron/johnny-five

http://blog.filipeflop.com/wireless/tutorial-arduino-bluetooth-hc-05-mestre.html

http://blog.filipeflop.com/sensores/tutorial-acelerometro-mpu6050-arduino.html

http://www.embarcados.com.br/arduino-acelerometro-giroscopio/

https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050

http://www.botched.co.uk/pic-tutorials/mpu6050-setup-data-aquisition/

http://diyhacking.com/arduino-mpu-6050-imu-sensor-tutorial/

http://forum.arduino.cc/index.php?topic=121825.0

Wearables :: Materiais iniciais

Começando uma oficina de criatividade no IED São Paulo, sobre wearables. Já trabalhei nos primeiros scratches, e a idéia é uma peça de roupa para auxiliar as pessoas no mercado de trabalho previsto entre 2026-2030. Conceito em outro post futuro.

Itens adquiridos:

  • Arduino Nano (versão chinesa de baixo custo)
  • Bateria de celular : lítio-ion 3.7V
  • Carregador Universal de bateria de celular
  • Fios de cabos de rede.
  • Chip giroscópio
  • Módulo bluetooth HC-05

O primeiro problema encontrado foi Arduino Nano! Comprei a versão chinesa que é mais barata, mas só funciona depois de instalar um driver específico. Felizmente achei fácil como solucionar o problema. (Links de ajuda abaixo)

Então, veio a bateria! Ela tem apenas 3.7V, e o Arduino precisa de 5V. Após deixar carregando por um tempo, fui medir a potência da bateria, e bateu nos 4.7V. Fiz um teste simples, com o software do blink, e deu certo! Com o andamento do projeto, veremos se uma bateria dessas será o suficiente.

Links para iniciar o uso dos chips especiais de giroscópio e bluetooth, também foram levantados, e estão listados abaixo.

 

CORREÇÃO DE ERROS:

1- O bom e velho Stackoverflow: Arduino Nano para Mac

2- Bom e velho Youtube:

3- Pesquisando na web: http://kig.re/2014/12/31/how-to-use-arduino-nano-mini-pro-with-CH340G-on-mac-osx-yosemite.html

 

MATERIAL DE SUPORTE PARA CHIPS ESPECIAS

Bluetooth

http://blog.filipeflop.com/wireless/tutorial-arduino-bluetooth-hc-05-mestre.html

Bluetooth com windows

http://www.instructables.com/id/Cheap-2-Way-Bluetooth-Connection-Between-Arduino-a/?ALLSTEPS

 

Acelerômetro

http://blog.filipeflop.com/sensores/tutorial-acelerometro-mpu6050-arduino.html

 

 

Blender – script para vídeo

Depois de muito tempo sem postagem…

Estou trabalhando o uso de Python scripts no Blender para uso em animações. É um trabalho bem diferente do uso na game engine, mas igualmente cheio de possibilidades.

Esses primeiros, que estou compartilhando são super simples, mas mostram o uso das APIs para tarefas do tipo: criam uma esfera, uma animação linear, edição de curvas para animação, e iniciam a renderização.

1- super simples

2- usando matriz de rotação

3- editando curvas de animação

4- usando event handlers, animando um ‘enxame’

No futuro eu posto outros exemplos.

App Español Único

Projeto de um aplicativo didático para estudo da língua espanhola. Iniciativa da editora Moderna. Em parceria com a Elumina Comunicação.

O mais desafiador nesse projeto foi programar um sistema de construção de interfaces, para o propósito de avaliação de respostas, que fosse de rápida correção e ampliação. Ao fim do projeto as interfaces poderiam ser construídas automaticamente apenas alimentando o software com dados XML, contendo o tipo do exercício, suas questões, respostas possíveis, e respostas consideradas corretas.

Projeto desenvolvido com Kivy, programado em Python.
Meu papel: desenvolvimento do sistema em Python, e execução das interfaces.