Last active
December 22, 2022 04:29
-
-
Save chardskarth/6e284df5d65abf811f75e76ca23ead89 to your computer and use it in GitHub Desktop.
HR Hub Sprout Login/Logout
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
from selenium import webdriver | |
from selenium.webdriver.common.by import By | |
from selenium.webdriver.support.wait import WebDriverWait | |
from selenium.webdriver.support import expected_conditions as EC | |
from selenium.webdriver.chrome.service import Service | |
import time | |
import traceback | |
import os | |
from dotenv import load_dotenv | |
load_dotenv() | |
TIMEOUT_LIMIT = 20 | |
chrome_driver_service=Service("/usr/local/bin/chromedriver") | |
driver = webdriver.Chrome(service=chrome_driver_service) | |
driver.get("https://whitecloak.hrhub.ph/Login.aspx") | |
def login(): | |
send_keys_element(By.ID, "txtUsername", os.getenv('SPROUT_USERNAME')) | |
send_keys_element(By.ID, "txtPassword", os.getenv('SPROUT_PASSWORD')) | |
click_element(By.NAME, "btnLogIn") | |
def send_keys_element(selectType, selector, keys): | |
return select_element(selectType, selector).send_keys(keys) | |
def select_element(select_type, selector): | |
return WebDriverWait(driver, TIMEOUT_LIMIT).until(EC.element_to_be_clickable((select_type, selector))) | |
def click_element(selectType, xpath): | |
return select_element(selectType, xpath).click() | |
def toggle_timein_or_timeout(): | |
click_element(By.CLASS_NAME, "clock-icon") | |
is_logged_in = check_is_logged_in() | |
if is_logged_in: | |
click_element(By.XPATH, '//li[@data-bind="click: webBundyLogOut"]') | |
else: | |
click_element(By.XPATH, '//li[@data-bind="click: webBundyLogIn"]') | |
return is_logged_in | |
def check_is_logged_in(): | |
latest_log = '//*[@id="tbl-attendance"]/table/tbody/tr[1]/td[3]/span' | |
latest_log_text = innertext_element(By.XPATH, latest_log) | |
return not 'Expected' in latest_log_text | |
def innertext_element(selectType, xpath): | |
return select_element(selectType, xpath).get_attribute("innerText") | |
def click_success_popup(): | |
successButtonXPath = "//button[@data-bb-handler='success']" | |
okButtonXpath = "//button[@data-bb-handler='ok']" | |
click_element(By.XPATH, successButtonXPath) | |
click_element(By.XPATH, okButtonXpath) | |
def close_and_quit_browser(): | |
driver.refresh() | |
logsBufferTime = 5 | |
time.sleep(logsBufferTime) | |
driver.close() | |
driver.quit() | |
def runAll(): | |
login() | |
is_logged_in = toggle_timein_or_timeout() | |
click_success_popup() | |
close_and_quit_browser() | |
print(f'You were logged {"in" if is_logged_in else "out"}. You should be logged {"out" if is_logged_in else "in"}') | |
try: | |
runAll() | |
except Exception as e: | |
traceback.print_exc() | |
print("Something went wrong") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment