-
Notifications
You must be signed in to change notification settings - Fork 0
/
Time_entry_script.py
129 lines (107 loc) · 4.62 KB
/
Time_entry_script.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import webbrowser
import pyautogui
from helper_functions import wait_until_loaded, tabEnter, check_user_input, collect_hours, moveToandClick
from images import *
# Create a dictionary that stores hours worked for each day of the week
work_week = {
"Monday": "8",
"Tuesday": "8",
"Wednesday": "8",
"Thursday": "8",
"Friday": "8",
"Saturday": "0",
"Sunday": "0"
}
# Welcome message👋
def welcome(work_week):
print("Welcome to the Workday Time Entry Script main menu!👋\n")
print("This script will help you enter your time for the week in Workday.📅\n")
userInput = check_user_input("Did you work a regular work week? A regular work week is 8 hours Monday-Friday(y/n): ", ["y", "n"])
if (userInput == "Y" or userInput == "y"):
print("Great! Let's get started!🚀\n")
elif (userInput == "N" or userInput == "n"):
print("\nNo worries. Let's collect your number of hours worked for each day of the week.📅\n")
print("If you made a mistake, you can simply enter 'u' to undo your last entry.⬅️\n")
print("If you want to start over, you can enter 'r' to reset all your entries.🔃\n")
print("If you want to exit the script, you can enter 'e' to exit.👋\n")
collect_hours(work_week)
# Open workday in a new tab on the default system browser
def open_workday():
# Open Workday in a new tab
URL = 'https://wd5.myworkday.com/ciena/d/home.htmld'
# Open a browser tab with the URL
webbrowser.open_new(URL)
# webbrowser.open(URL, new = 1, autoraise=True)
# webbrowser.get(URL)
# Wait a bit to account for your potato pc🥔
pyautogui.sleep(2)
# Detect if the user isn't signed in to Workday yet
def check_sign_in():
time_elapsed = 0
while (pyautogui.locateCenterOnScreen(workday_sign_in, confidence=0.9) is None and pyautogui.locateCenterOnScreen(menu_hamburger_button, confidence=0.9) is None):
pyautogui.sleep(0.1)
time_elapsed += 1
if time_elapsed % 5 == 0:
print("Waiting for target image. Is your browser window open and on your main monitor?\n")
print("Please be patient if the website is loading. The script will continue a soon as the image is found.\n")
if pyautogui.locateCenterOnScreen(workday_sign_in, confidence=0.9) is not None:
print("Workday sign in page detected. Signing in...\n")
# Wait for browser to autofill credentials
pyautogui.sleep(0.5)
pyautogui.moveTo(pyautogui.locateCenterOnScreen(workday_sign_in_button, confidence = 0.9))
pyautogui.click()
pyautogui.alert("Please verify your Okta credentials so the script can continue. :)")
# Navigate to the enter time page
def go_to_enter_time_page():
moveToandClick(menu_hamburger_button)
moveToandClick(time_button)
moveToandClick(my_calendar_button)
moveToandClick(actions_button)
wait_until_loaded(drop_down_menu)
pyautogui.press('down', presses=4)
pyautogui.press('enter')
wait_until_loaded(quick_add_text)
tabEnter(3)
# Enter time for the week
def enter_time(work_week):
# Keep tabbing and stop just before the first day of the week
pyautogui.press('tab', presses=11)
# Make the dictionary start with Sunday, because that's the first day of the week in Workday
first_day = work_week.pop("Sunday")
work_week = {**{"Sunday": first_day}, **work_week}
# Loop through the dictionary and enter the hours for each day, starting with Sunday
for day, hours in work_week.items():
pyautogui.press('tab')
pyautogui.typewrite(hours)
# Click the OK button
moveToandClick(orange_ok_button)
# Click the review button
moveToandClick(review_button)
print("Time entry complete!🎉")
# Clear the time entry
def clear_time_entry():
print("Would you like to clear your time entry?🤔")
userInput = check_user_input("Enter 'y' to clear your time entry or 'n' to exit: ", ["y", "n"])
if (userInput == "Y" or userInput == "y"):
moveToandClick(cancel_button)
moveToandClick(actions_button)
wait_until_loaded(drop_down_menu)
pyautogui.press('down', presses=2)
pyautogui.press('enter')
moveToandClick(checkbox_button)
moveToandClick(orange_ok_button)
print("Time entry cleared!🎉")
elif (userInput == "N" or userInput == "n"):
print("Exiting script.👋")
exit()
# Main function
def main ():
welcome(work_week)
open_workday()
check_sign_in()
go_to_enter_time_page()
enter_time(work_week)
clear_time_entry()
# Run the main function if this file is run directly
if __name__ == "__main__":
main()