-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
62 lines (46 loc) · 2 KB
/
main.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
import os
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from time import sleep
from dotenv import load_dotenv
load_dotenv()
USERNAME: str = os.getenv('SINAI_USERNAME')
PASSWORD: str = os.getenv('SINAI_PASSWORD')
HOME_PAGE: str = 'https://sinai.net.co/Web/Default.aspx'
GRADES_PAGE: str = 'https://sinai.net.co/Docente/018/Calificaciones.aspx'
def read_data(path: str)-> pd.DataFrame:
grades_df = pd.read_csv(path, sep=';')
return grades_df.loc[:, ~grades_df.columns.str.contains('Unnamed')]
def login(username: str, password: str, driver)-> None:
driver.find_element(by=By.ID, value='UsernameTxt').send_keys(username)
driver.find_element(by=By.ID, value='PasswordTxt').send_keys(password)
driver.find_element(by=By.ID, value='Entrar').click()
def edit_grade(i: int, grade:float, driver)-> None:
grade_element_id: str = f'ctl00_ContentPlaceHolder1_ParcialesRpt_ctl{i:02d}_Nota1'
grade_element = driver.find_element(by=By.ID, value=grade_element_id)
grade_element.clear()
grade_element.send_keys(grade)
def save_grades(dataframe: pd.DataFrame, driver)-> None:
for item in dataframe.items():
element = driver.find_element(by=By.ID, value='ctl00_ContentPlaceHolder1_AsignaturaLst')
select = Select(element)
select.select_by_visible_text(item[0])
sleep(2)
driver.find_element(by=By.LINK_TEXT, value='Generar Planilla').click()
sleep(2)
for i, grade in enumerate(item[1], 1):
edit_grade(i, grade, driver)
driver.execute_script("window.scrollTo(0, document.body.scrollTop);")
driver.find_element(by=By.LINK_TEXT, value='Guardar').click()
sleep(3)
def main()-> None:
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(HOME_PAGE)
login(USERNAME, PASSWORD, driver)
driver.get(GRADES_PAGE)
grades_df = read_data('grades.csv')
save_grades(grades_df, driver)
main()