domingo, 19 de abril de 2020

Instalando Python3 + Selenium + PhantomJS no UBUNTU


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








Atualização DELL INSPIRON 15R com Update para Windows 10 22H2 travado em 61% ou 99%

 Como atualizar notebook DELL INSPIRON 15R com Windows 10 que está com a atualização travada em 61% ou 99%: Processo de atualização manual d...