# from selenium.webdriver.common.alert import Alert import os import sys import traceback from time import sleep from collections import deque from threading import Thread, Event import keyboard as kb import pywinctl as gw from selenium import webdriver from selenium.webdriver import ChromeOptions from selenium.webdriver.support import ui from selenium.webdriver.common.by import By from selenium.common.exceptions import ( NoSuchElementException, ElementClickInterceptedException, StaleElementReferenceException, TimeoutException, WebDriverException ) import yagmail # from envelopes import Envelope def pretty_exc(): exc_type, exc_obj, exc_tb = sys.exc_info() for tb in list(traceback.format_exception(exc_type, exc_obj, exc_tb)): print(tb) def accept_cert(): # brave_ready.wait() sleep(3) kb.press_and_release('enter') sleep(1) try: sleep(4) kb.write(os.getenv('PKCS11PIN'), 0.05) sleep(1) kb.press_and_release('enter') except Exception: pass brave_ready = Event() last_ = deque(maxlen=500) env2 = yagmail.SMTP(user='claudia.conta.ab@gmail.com', password='abconsult') subject = 'new message in SPV' all_element_exceptions = ( NoSuchElementException, ElementClickInterceptedException, StaleElementReferenceException, WebDriverException, TimeoutException ) chrome_options = ChromeOptions() chrome_options.add_argument('--disable-dev-shm-usage') chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-gpu') chrome_options.add_experimental_option('excludeSwitches', ['enable-automation']) chrome_options.add_argument('user-data-dir=d:/py_scripts/__anaf__') # chrome_options.binary_location = 'C:/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe' m_url = 'https://www.anaf.ro/auth_status.html' m_url2 = 'https://www.anaf.ro/anaf/myinternet/SPV/mesaje' driver = webdriver.Chrome(options=chrome_options) thread = Thread(target=accept_cert, args=()) thread.start() driver.switch_to.window(driver.current_window_handle) driver.get(m_url) while True: sleep(0.5) # try: # pup = ui.WebDriverWait(driver, 5).until(lambda driver: driver.find_element(By.XPATH, '/html/body/div[4]/div[3]/div/button/span')) # pup.click() # except (NoSuchElementException, TimeoutException) as exc: # pretty_exc() try: driver.switch_to.default_content() except TimeoutException: pass # t2 = 10 # while t2 >= 0: # print(f'refreshing in {t2}', end='\r', flush=True) # sleep(1) # t2 -= 1 t = 210 try: driver.get(m_url2) # driver.switch_to.default_content() print(f'connecting to {m_url}') try: _frame = driver.find_elements(By.TAG_NAME, 'iframe')[0]; sleep(1) driver.switch_to.frame(_frame); sleep(1) except IndexError: pretty_exc() # table_ = browser.find_element(By.ID, 'form:MesajeTable_data') # print(table_.text) first_row = driver.find_element(By.XPATH, '//*[@id="form:MesajeTable_data"]/tr[1]') # '//*[@id="form:MesajeTable_data"]/tr[1]' message = first_row.text last_.appendleft(message) print(message) if 'recipisa' not in message and 'RASPUNS SOLICITARE' not in message: if message not in last_: body = message # env2.send(to='claudia.conta.ab@gmail.com', subject=subject, contents=body) while t >= 0: mins, secs = divmod(t, 60) timeformat = '{:02d}:{:02d}'.format(mins, secs) print('...refreshing', timeformat, end='\r', flush=True) sleep(1) t -= 1 except all_element_exceptions: pretty_exc() print(f'redirecting to {m_url}') thread = Thread(target=accept_cert, args=()) thread.start() driver.switch_to.window(driver.current_window_handle) try: token_logon = gw.getWindowsWithTitle('Token Logon')[0] token_logon.activate() except IndexError: pass try: driver.get(m_url) # get https://www.anaf.ro/auth_status.htmls except Exception as exc: print(str(exc)) # browser.refresh() # browser.find_element(By.XPATH, '/html/body/div/header/div[2]/ul/li[1]/a').click(); sleep(1) # t3 = 60 # while t3 >= 0: # print(f'sleeping for {t3}', end='\r', flush=True) # sleep(1) # t3 -= 1 # browser.get('https://www.anaf.ro/auth_status.html') # browser.find_element(By.XPATH, '/html/body/table[2]/tbody/tr[1]/td/b[2]/a').click() # '/html/body/div[1]/div[4]/div/div[3]/ul/li[3]/span/a/span'