Skip to content

Instantly share code, notes, and snippets.

@chardskarth
Last active December 22, 2022 04:29
Show Gist options
  • Save chardskarth/6e284df5d65abf811f75e76ca23ead89 to your computer and use it in GitHub Desktop.
Save chardskarth/6e284df5d65abf811f75e76ca23ead89 to your computer and use it in GitHub Desktop.
HR Hub Sprout Login/Logout
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