Skip to content

Instantly share code, notes, and snippets.

@clint74
Created March 1, 2019 19:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save clint74/876b6e2a34e705ceda8b590e9a78a1fe to your computer and use it in GitHub Desktop.
Save clint74/876b6e2a34e705ceda8b590e9a78a1fe to your computer and use it in GitHub Desktop.
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