Created
March 1, 2019 19:36
-
-
Save clint74/876b6e2a34e705ceda8b590e9a78a1fe to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import platform | |
import requests | |
from time import sleep | |
import os | |
import sys | |
from contextlib import contextmanager | |
from os import mkdir, getcwd | |
from selenium import webdriver | |
from PIL import Image | |
from selenium.webdriver.chrome.options import Options | |
from selenium.common.exceptions import NoSuchElementException | |
# from captcha.decoder import decode_image, decode_url, decode_base64 | |
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | |
BASE_URL = 'https://siscoaf.fazenda.gov.br' | |
sys.path.append(BASE_DIR) | |
def decode_image(): | |
return '23jlkj3oi' | |
class Consulta_coaf: | |
def __init__(self, dds_psq, tp_psq, headless=False): | |
"""INICIALIZANDO PEGANDO O CAPCHA PARA UTILIZAR NO ANTI CAPCHA""" | |
# sleep(10) | |
self.dr = None | |
self.carregar_driver(headless) | |
# self.tp_psq(tp_psq) | |
self.pegar_captcha() | |
self.preencher_campos(dds_psq) | |
print("FINALIZADO COM SUCESSO!") | |
def preencher_campos(self, dds_psq): | |
campo_cnpj = self.dr.find_element_by_xpath("""//*[@id="txtNrCpfCnpj"]""") | |
campo_cnpj.send_keys(dds_psq) | |
assert campo_cnpj.get_attribute('value') == dds_psq | |
captcha = 'self.decodificando_captcha()' | |
print("DESCONBINRDO CAPTCHA!") | |
self.dr.find_element_by_xpath("""//*[@id="j_idt35:txtTexto_captcha_serpro_gov_br"]""").send_keys(captcha) | |
self.dr.find_element_by_xpath("""//*[@id="btnConsultar"]/span""").click() | |
print("ENTRANDO NO RESULTADO!") | |
self.pegar_resultado() | |
def pegar_resultado(self): | |
print("EMITINDO RESULTADO!") | |
self.dr.find_element_by_xpath("""//*[@id="formTelaComprovante:j_idt21:btnImprimir"]/span""").click() | |
self.dr.find_element_by_xpath("""//*[@id="print-header"]/div/button[2]""").click() | |
def pegar_captcha(self): | |
print("TIRANDO PRINT DO CAPTCHA") | |
nome_im = './captcha.png' | |
try: | |
img = self.dr.find_element_by_id("""j_idt35:imgCaptchaSerpro""") | |
pc_im = img.location | |
taman = img.size | |
esque = pc_im['x'] | |
acima = pc_im['y'] | |
direi = pc_im['x'] + taman['width'] | |
baixo = pc_im['y'] + taman['height'] | |
self.dr.save_screenshot(nome_im) | |
im = Image.open(nome_im) | |
im = im.crop((esque, acima, direi, baixo)) | |
im.save(nome_im) | |
print("SALVANDO CAPTCHA") | |
except NoSuchElementException: | |
print('Elemento não encontrado') | |
self.dr.close() | |
def decodificando_captcha(self): | |
"""DESCOBRINDO CAPTCHA""" | |
return decode_image("./captcha.png") | |
def tp_psq(self, tp_psq): | |
tipo = """//*[@id="rdTipoPessoa"]/tbody/tr/td[2]/label""" if(tp_psq == "J") else \ | |
"""//*[@id="rdTipoPessoa"]/tbody/tr/td[1]/label""" | |
self.dr.find_element_by_xpath(tipo).click() | |
def carregar_driver(self, headless): | |
url = "/siscoaf-internet/pages/consultaPO/consultarPO.jsf" | |
chrome_options = webdriver.ChromeOptions() | |
if headless: | |
chrome_options.add_argument("--headless") | |
_driver = webdriver.Chrome(executable_path='{}/chromedriver'.format( | |
os.path.join(BASE_DIR, 'scripts') | |
), | |
chrome_options=chrome_options | |
) | |
_driver.get(BASE_URL + url) | |
self.dr = _driver | |
####### TESTANDO A FUNÇÃO: | |
####### DEIVE VAZIO O 5 PARA ELE PERCORRER 2220000 | |
Consulta_coaf("28.210.959/0001-70", "J", headless=True) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment