INSTALAÇÃO
O Selenium é um conjunto de ferramentas que permite realizar testes automatizados ou buscar dados em páginas web ou realizar webcrawler (realizar buscas automatizadas em websites).
O Selenium precisa se comunicar com um Navegador que ele vai controlar e realizar todos os comandos solicitados, como procurar um botão na página e clicar nele.
Ele consegue se comunicar com praticamente todos os navegadores (Firefox, Chrome, IE, Safari, Opera, PhamtomJS, etc...)
Neste tutorial vou ensinar a utilizar o PhantomJS, pois é um browser headless (sem necessidade de interface gráfica), ou seja pode ser utilizado em servidores.
1) Instalação dos pacotes necessários:
--------------------------------------------------------
# apt-get install nodejs npm python3 python3-pip python3-selenium
--------------------------------------------------------
Obs.: NÃO instale o PhantomJS do repositório via apt-get, a versão que está no repositório do Ubuntu/Debian é compilado com interface gráfica, e não é compatível com a biblioteca do Selenium para Python. Caso tenha instalado, desinstale com #apt-get purge PhamtomJS e siga passo 2.
2) Baixe o PhamtomJS do site oficial https://phantomjs.org, a versão correspondente ao seu servidor (32 ou 64 bits):
--------------------------------------------------------
#
cd /usr/src
# wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
# tar -jzvf phantomjs-2.1.1-linux-x86_64.tar.bz2
---------------------------------------------------------
Adicione no PATH temporariamente para teste:
------------------------------------------------------------
# PATH=$PATH: /usr/src/phantomjs-2.1.1-linux-x86_64/bin
------------------------------------------------------------
Adicione no PATH permanentemente também:
------------------------------------------------------------
echo "export PATH=$PATH:/usr/src/phantomjs-2.1.1-linux-x86_64/bin/" >> ~/.bashrc
------------------------------------------------------------
Verifique se o PhantomJS está executando corretamente:
------------------------------------------------------------
------------------------------------------------------------
# phantomjs
--version
2.1.1
------------------------------------------------------------
CRIE UM SCRIPT SIMPLES EM PYTHON3 COM SELENIUM PARA TESTE:
testeselenium.py ----------------------------------------------------------
#!/usr/bin/env python3
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.PhantomJS()
driver.get("http://www.google.com")
input_element = driver.find_element_by_name("q")
input_element.send_keys("python")
input_element.submit()
html_source=driver.page_source
print(html_source)
----------------------------------------------------------
Neste exemplo, o Selenium utiliza o browser PhantomJS, abre a página do Google, procura pelo campo de pesquisa (find_element_by_name("q")) digita "python" e manda pesquisar.----------------------------------------------------------
Executo o código:
# ./testeselenium.py
Vai retornar todo o código HTML com a resposta da pesquisa. Para poder visualizar melhor utilize o Lynx para remover as tags.
# ./testeselenium.py | lynx --dump -stdin | more
DICAS
- A melhor forma para encontrar o nome dos campos, utilize o browser Firefox ou Chrome no "Modo desenvolvedor", basta abrir a página, clicar com o botão direito e escolher "Inspecionar", ao lado direito vai abrir o DevTools, onde é possível navegar pelo código fonte e elementos da página.
- Nunca utilize o nome selenium.py para o seu script, pois ele conflita com a biblioteca do Selenium.
Referências:
Realizando pesquisa nos elementos:
Examples, benchmark, video.
https://realpython.com/headless-selenium-testing-with-python-and-phantomjs/Unit Test:
https://medium.com/@yareda/automating-tests-with-python-selenium-and-phantomjs-db37726b381