135 lines
5.3 KiB
Python
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"
|