Files
RTG/scrapper/webistes/identity_iq_old/get_refresh_date.py
2026-06-19 20:08:01 +06:00

135 lines
5.3 KiB
Python

import traceback
import time
from bs4 import BeautifulSoup
from flask import jsonify
from selenium import webdriver
from selenium.common.exceptions import TimeoutException, NoSuchElementException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.wait import WebDriverWait
def get_refresh_date(email, password, ssn):
try:
url = "https://member.identityiq.com/"
chrome_path = "/usr/lib/chromium-browser/chromedriver"
#chrome_local_path = "D:\\scrapper\\chromedriver_win32\\chromedriver.exe"
chrome_local_path = "D:\\scrapper\\chromedriver_win64\\chromedriver.exe"
option = webdriver.ChromeOptions()
option.add_argument('--headless')
option.add_argument('--no-sandbox')
option.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(chrome_path,options=option)
#driver = webdriver.Chrome(chrome_local_path,options=option)
#phantomjs_server_path = "/usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs"
phantomjs_local_path = "D:\\scrapper\\phantomjs-2.1.1-windows\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe"
#driver = webdriver.PhantomJS(executable_path= phantomjs_server_path,service_args=['--ignore-ssl-errors=true', '--ssl-protocol=any'])
#driver = webdriver.PhantomJS(executable_path= phantomjs_local_path,service_args=['--ignore-ssl-errors=true', '--ssl-protocol=any'])
driver.get(url + 'login.aspx')
driver.find_element_by_id('txtUsername').send_keys(email)
driver.find_element_by_id('txtPassword').send_keys(password)
driver.find_element_by_id("imgBtnLogin").click()
timeout = 120
time.sleep(5)
try:
ele_acc_lock = driver.find_element(By.CLASS_NAME, "chakra-modal__header")
error_text = ele_acc_lock.text
driver.quit()
return "ACCOUNT_LOCKED"
except:
element_login = driver.find_element(By.CLASS_NAME, "chakra-text")
if element_login.text == 'Invalid login attempt':
driver.quit()
return "INVALID_LOGIN"
try:
wait = WebDriverWait(driver, timeout)
WebDriverWait(driver, timeout).until(
ec.url_to_be(url + 'security-question') or ec.url_to_be(url + 'Dashboard.aspx')
)
wait.until(
lambda driver: driver.current_url != (url + 'security-question') or (url + 'Dashboard.aspx')
)
if driver.current_url == url + 'security-question':
element_present = ec.presence_of_element_located(
(By.NAME, 'userSecurityAnswer')
)
WebDriverWait(driver, timeout).until(element_present)
driver.find_element_by_name('userSecurityAnswer').send_keys(ssn)
driver.find_element_by_id("FBfbforcechangesecurityanswer_ibtSubmit").click()
# element_present = ec.presence_of_element_located((By.TAG_NAME, 'dashboard-layout'))
# WebDriverWait(driver, timeout).until(element_present)
driver.get(url + 'Dashboard.aspx')
if driver.current_url == url + 'Dashboard.aspx':
#driver.get(url + 'Dashboard.aspx')
element_present = ec.presence_of_element_located((By.ID,'chakra-toast-manager-top'))
WebDriverWait(driver, timeout).until(element_present)
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
driver.implicitly_wait(10)
time.sleep(5)
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
break
last_height = new_height
try:
element_click = driver.find_element(By.CLASS_NAME,'chakra-modal__close-btn')
element_click.click()
except NoSuchElementException:
pass
try:
element = driver.find_element(By.CLASS_NAME,'chakra-skeleton')
response = {
'refresh_date': element.text,
'button_type': 1
}
if 'Refresh Report' in element.text:
response['button_type'] = 2
except NoSuchElementException:
response = {
'refresh_date': 'Not Found',
'button_type': 1
}
driver.quit()
return jsonify(response)
driver.quit()
return traceback.format_exc()
return "ERROR"
except TimeoutException:
driver.quit()
return "TIME_OUT"
except Exception:
return traceback.format_exc()
return "ERROR"