from selenium import webdriver
import time
import datetime
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
import tkinter as tk
#GUI Set-Up
class Class_Selector:
def __init__(self,window):
window.title('Class Selector Bot')
#Information
self.url = 'https://buzzport.gatech.edu/'
self.browser=self.setup()
canvas=tk.Canvas(window,height=300,width=400)
canvas.pack()
frame = tk.Frame(window,bg='black')
frame.place(relwidth=1,relheight=1)
labeltitle = tk.Label(frame,text='Class Selector Bot',bg='yellow')
labeltitle.place(relx=0.35,rely=0,relwidth=0.35,relheight=0.125)
label1=tk.Label(frame,text='Buzzport Username',bg='yellow')
label1.place(relx=0.05, rely=0.2,relwidth=0.4,relheight=0.125)
self.entry1=tk.Entry(frame)
self.entry1.place(relx=0.5,rely=0.2,relwidth=0.45,relheight=0.125)
self.username = self.entry1.get()
label2=tk.Label(frame,text='Buzzport Password',bg='yellow')
label2.place(relx=0.05, rely=0.3,relwidth=0.4,relheight=0.125)
self.entry2=tk.Entry(frame)
self.entry2.place(relx=0.5,rely=0.3,relwidth=0.45,relheight=0.125)
self.password = self.entry2.get()
label3=tk.Label(frame,text='Duo Passcode',bg='yellow')
label3.place(relx=0.05, rely=0.4,relwidth=0.4,relheight=0.125)
self.entry3=tk.Entry(frame)
self.entry3.place(relx=0.5,rely=0.4,relwidth=0.45,relheight=0.125)
self.passcode = self.entry3.get()
label4=tk.Label(frame,text='Course ID',bg='yellow')
label4.place(relx=0.05,rely=0.6,relwidth=0.4,relheight=0.125)
self.entry4=tk.Entry(frame)
self.entry4.place(relx=0.5,rely=0.6,relwidth=0.45,relheight=0.075)
self.cid1=self.entry4.get()
self.entry5 = tk.Entry(frame)
self.entry5.place(relx=0.5, rely=0.675, relwidth=0.45, relheight=0.075)
self.cid2 = self.entry5.get()
self.entry6 = tk.Entry(frame)
self.entry6.place(relx=0.5, rely=0.75, relwidth=0.45, relheight=0.075)
self.cid3 = self.entry6.get()
run_button=tk.Button(frame,text='Run',command= lambda : self.login())
run_button.place(relx=0.4,rely=0.9,relwidth=0.2,relheight=0.100)
#Browser Set-up
def setup(self):
browser = webdriver.Chrome()
#browser=webdriver.Chrome() but with added specifications (Launches Browser)
print('Opening Browser')
browser.get(self.url)
print('Opening site '+str(self.url))
browser.maximize_window()
print('Maximizing window')
return browser
def login(self):
self.username = self.entry1.get()
self.password = self.entry2.get()
self.passcode = self.entry3.get()
self.cid1=self.entry4.get()
self.cid2 = self.entry5.get()
self.cid3 = self.entry6.get()
try:
self.browser.find_element_by_xpath("//input[@type='button']").click()
except:
print('Not in original page')
self.browser.find_element_by_xpath("//input[@id='username']").send_keys(self.username)
self.browser.find_element_by_xpath("//input[@id='password']").send_keys(self.password)
self.browser.find_element_by_xpath("//input[@class='button btn-submit']").click()
print('Transferring to Duo Security Check')
time.sleep(2)
self.browser.switch_to.frame(self.browser.find_element_by_xpath("//iframe[@id='duo_iframe']"))
print('Found duo instance frame')
try:
self.browser.find_element_by_xpath("//button[@class='btn-cancel']").click()
except:
print('No cancel button')
self.browser.find_element_by_xpath("//button[@id='passcode']").click()
self.browser.find_element_by_xpath("//input[@class='passcode-input']").send_keys(self.passcode)
self.browser.find_element_by_xpath("//button[@id='passcode']").click()
time.sleep(5)
try:
self.browser.find_element_by_xpath("//button[@class='auth-button positive']").click()
time.sleep(10)
except:
print('push not needed')
time.sleep(5)
print('Logging into Buzzport')
self.browser.get(str(self.url) + '')
print('Going to class selector page')
self.browser.get('https://oscar.gatech.edu/pls/bprod/twbkwbis.P_GenMenu?name=bmenu.P_StuMainMnu')
self.browser.get('https://oscar.gatech.edu/pls/bprod/twbkwbis.P_GenMenu?name=bmenu.P_RegMnu')
self.browser.get('https://oscar.gatech.edu/pls/bprod/bwskfreg.P_AltPin')
self.browser.find_element_by_xpath("//select[@name='term_in']").click()
self.browser.find_element_by_xpath("//option[@value='201908']").click()
WebDriverWait(self.browser, 3000).until(EC.presence_of_element_located((By.XPATH, "")))
print('Submit button pressed')
try:
self.browser.find_element_by_xpath("//input[@id='crn_id1']").send_keys(self.cid1)
self.browser.find_element_by_xpath("//input[@id='crn_id2']").send_keys(self.cid2)
self.browser.find_element_by_xpath("//input[@id='crn_id3']").send_keys(self.cid3)
self.browser.find_element_by_xpath("//input[@value='Submit Changes']").click()
except:
print('Page not found')
root=tk.Tk()
class_selector=Class_Selector(root)
root.mainloop()
Я уже некоторое время пытаюсь решить эту проблему, но я не нашел способа ее решения. Я несколько раз пытался переустановить самую последнюю версию webdriver, а также установить разные версии. Я также видел другие форумы, обсуждающие эту проблему, но я не понимаю, как выполнить решения, которые они объясняют (у меня никогда не было класса для python, что, вероятно, поэтому; полностью самоучка). Если бы кто-нибудь мог помочь мне обойти эту ошибку, это было бы очень ценно.