def lessonDelete(self): lesson_link = self.__web.wait( EC.element_to_be_clickable(( By.XPATH, '//*[@id="app"]/div/div/div/div[4]/div/div[1]/div[2]/div/div/div/div[1]/div/div[2]/div[1]/div[2]/a' )), 1) if lesson_link == False: return False hour = self.__web.wait( EC.visibility_of_element_located(( By.XPATH, '//*[@id="app"]/div/div/div/div[4]/div/div[1]/div[2]/div/div/div/div[1]/div/div[2]/div[1]/div[1]/div/span' ))).text lesson = lesson_link.text time.sleep(float(web_wait) / 6) lesson_link.click() date = self.__web.element( "//*[@id=\"info_form\"]/div[2]/div/div/div[1]").text.split(",")[0] self.__web.wait( EC.element_to_be_clickable((By.ID, 'btn_Delete_meeting')), 1).click() time.sleep(float(web_wait) / 6) self.__web.wait( EC.element_to_be_clickable((By.ID, 'submitDeleteEndBtn')), 1).click() log.write("Ders silindi: {} ({}, {})".format(lesson, date, hour))
def setAutoRecordSettingOn(self): self.getSettingRecording() self.__web.element( "//div[@id=\"feature-localrecording\"]//label[@class=\"zm-switch\"]" ).click() # time.sleep(0.2) # self.__web.element("//*[contains(text(), 'Turn On')]").click() # time.sleep(0.2) self.__web.wait( EC.element_to_be_clickable( (By.XPATH, "//*[contains(text(), 'Turn On')]")), 1).click() self.__web.wait( EC.presence_of_element_located( (By.XPATH, "//*[contains(text(), 'Turn On')]")), 2, True) self.__web.wait( EC.visibility_of_element_located( (By.XPATH, '//*[contains(text(), "Your settings have been updated.")]'))) time.sleep(3) self.__web.element( "//div[@id=\"feature-autorecording\"]//label[@class=\"zm-switch\"]" ).click() self.__web.wait( EC.visibility_of_element_located( (By.XPATH, '//*[contains(text(), "Your settings have been updated.")]'))) log.write("Zoom'da Auto Record ayarı açıldı.", "header")
def login(self, user): self.__driver.execute_script( "window.open('https://giris.eba.gov.tr/EBA_GIRIS/teacher.jsp');") self.__web.switchTab(-1) edevlet_btn = self.__web.wait( EC.element_to_be_clickable( (By.XPATH, '//*/button[@title="edevlet girişi"]')), 1) if edevlet_btn == False: return edevlet_btn.click() self.__web.element("//*/input[@id=\"tridField\"]").send_keys( user['edevlet_tc']) self.__web.element("//*/input[@id=\"egpField\"]").send_keys( user['edevlet_password']) if user['edevlet_tc'] == "" or user['edevlet_password'] == "": self.waitForSignIn(user) elif user_sign: self.waitForSignIn(user) else: self.__web.element("//*/input[@name=\"submitButton\"]").click() time.sleep(2) if self.__web.get( ).current_url == 'https://giris.eba.gov.tr/EBA_GIRIS/hata.jsp': log.write('Hata sayfasına gitti. Tekrar giriş yapılacak.') self.login(user) self.__web.wait(EC.element_to_be_clickable((By.ID, 'vc-treeleftmenu'))) log.write("<green>EBA'ya giriş yapıldı.</>", "header")
def setRequestUnmuteSettingOn(self): self.getSettingMeeting() self.__web.element( "//div[@id=\"feature-requestPermission2Unmute\"]//label[@class=\"zm-switch\"]" ).click() self.__web.wait( EC.visibility_of_element_located( (By.XPATH, '//*[contains(text(), "Your settings have been updated.")]'))) log.write("Zoom'da Request Unmute ayarı açıldı.", "header")
def lessonDelete(self): lesson_btn_group = self.__web.wait( EC.element_to_be_clickable(( By.XPATH, '//*[@id="liveLessonList"]/div[2]/div/div[3]/div/div[3]/div[1]/div[2]/div[1]/div/div[7]' )), 1) if lesson_btn_group == False: return False date_element = self.__web.wait( EC.visibility_of_element_located(( By.XPATH, '//*[@id="liveLessonList"]/div[2]/div/div[3]/div/div[3]/div[1]/div[2]/div[1]/div/div[5]/div/div[1]/div' )), 1) date = date_element.text.replace("\n", ", ") lesson = self.__web.wait( EC.visibility_of_element_located(( By.XPATH, '//*[@id="liveLessonList"]/div[2]/div/div[3]/div/div[3]/div[1]/div[2]/div[1]/div/div[1]/div/div[1]/div' )), 1).text lesson_btn_group.click() delete_btn = self.__web.wait( EC.element_to_be_clickable( (By.XPATH, '//*/a[contains(text(), "Sil")]')), 1) if delete_btn == False: log.write( "Ders çok yakın, silinemedi: {} ({})".format(lesson, date), "error") return delete_btn.click() self.__web.wait( EC.element_to_be_clickable( (By.XPATH, '//*/a[contains(text(), "EVET")]')), 1).click() self.__web.wait( EC.visibility_of_element_located(( By.XPATH, '//*/div[contains(text(), "Canlı ders başarı ile silindi")]'))) dates = date_element.text.split("\n") self.__web.wait( EC.presence_of_element_located( (By.XPATH, "//*/div[contains(text(),'{}') and contains(.,'{}')]".format( dates[0], dates[1]))), 300, True) self.__web.wait( EC.presence_of_element_located(( By.XPATH, '//*/div[contains(text(), "Canlı ders başarı ile silindi")]')), 300, True) log.write("Ders silindi: {} ({})".format(lesson, date))
def lessonsDelete(self): self.__web.switchTab(0) self.getUpcomingMeetings() log.write("Zoom'da dersleri silme işlemi başlıyor.", "header") while True: if self.lessonDelete() == False: break log.write( "Zoom'da dersleri silme işlemi başarılı bir şekilde tamamlandı.", "header")
def lessonsDelete(self): self.__web.switchTab(1) self.getExternalLessons() log.write("EBA'da dersleri silme işlemi başlıyor.", "header") while True: if self.lessonDelete() == False: break log.write( "EBA'da dersleri silme işlemi başarılı bir şekilde tamamlandı.", "header")
def getSelection(self): # Eğer Kullanıcı sayısı 0 ise dur if len(self._rows) == 0: log.write("Kullanıcı olmadığı için program durduruldu.", "error") exit() # Kullanıcı seçimi yaptır users_data = self._rows if self.opt_user == False: user_ids = self.ids() selection_list = ["Tüm Kullanıcılar"] + self.get('name') selection = SelectionMenu.get_selection(selection_list, title="EBABOT - HARİCİ CANLI DERS", subtitle="Lütfen işlem yapılacak kullanıcı seçimi yapın.", show_exit_option=False) if selection != 0: users_data = [self.find(user_ids[selection-1])] log.write("{} kullanıcı alındı.".format(len(users_data)), "header") return users_data
def __init__(self, user): super(Browser, self).__init__() self.options = webdriver.ChromeOptions() self.options.add_experimental_option("excludeSwitches", ["enable-logging"]) self.options.headless = web_headless self.options.add_argument("user-data-dir={}\\{}".format( web_profile, user['name'])) self.__web = webdriver.Chrome(chromedriver_path, options=self.options) self.__web.implicitly_wait(web_implicitly_wait) if web_size == "max": self.__web.maximize_window() else: self.__web.set_window_size(web_size[0], web_size[1]) log.write("Tarayıcı varsayılan ayarlarda açıldı.", "header") log.write("<blue>Gizli mi?:</> {}".format( "Evet" if web_headless else "Hayır"))
def lessonSave(self, lesson, xl): self.__web.switchTab(0) self.getSchedule() isRepeat = False reqUnResult = self.requestUnmute(lesson) auRecResult = self.autoRecord(lesson) if reqUnResult == "repeat": isRepeat = True self.setRequestUnmuteSettingOn() if auRecResult == "repeat": isRepeat = True self.setAutoRecordSettingOn() if isRepeat == True: self.lessonSave(lesson, xl) return self.lessonMeta(lesson) self.lessonDate(lesson, xl) self.lessonHour(lesson, xl) # time.sleep(0.5) self.lessonTime(lesson) self.meetingID(lesson) self.meetingPasscode(lesson) self.waitingRoom(lesson) self.videoHost(lesson) self.videoParticipant(lesson) self.__web.element("//*[@id=\"meetingSaveButton\"]").click() log.write("{}. ders Zoom'da kaydedildi: {} ({}, {} - {})".format( lesson['id'], lesson['Canlı Ders Başlığı'], xl.getDateString(lesson['Canlı Ders Tarihi']), xl.getHourString(lesson['Ders Başlangıç']), xl.getHourString(lesson['Ders Bitiş']))) lesson['link'] = self.__web.element( "//*[@id=\"info_form\"]/div[5]/div/div/span[1]").text self.__web.element("//*[@id=\"showPassword\"]").click() lesson['passcode'] = self.__web.element( "//*[@id=\"displayPassword\"]").text
def startTime(self): self.start_time = time.time() print("") log.write("-----------------------------------------------") log.write("Başlangıç Zamanı: {}".format( time.strftime("%d.%m.%Y, %H:%M:%S", time.localtime()))) log.write("-----------------------------------------------") print("")
def lessonSave(self, lesson, xl): self.__web.switchTab(1) self.getLessonSave() self.lessonMeta(lesson) self.lessonDate(lesson, xl) time.sleep(float(web_wait) / 6) self.lessonHour(lesson, xl) self.lessonDescription(lesson) self.lessonApp() self.lessonRemoteInfo(lesson) self.lessonName(lesson) time.sleep(float(web_wait) / 6) self.lessonUnit(lesson) time.sleep(float(web_wait) / 6) self.lessonSubject(lesson) self.lessonClass(lesson) self.__web.element( "//*[contains(text(), 'ÖĞRENCİLERİ LİSTELE')]").click() time.sleep(float(web_wait) / 6) # self.__web.element("//*[contains(text(), 'CANLI DERSİ GÖNDER')]").click() self.__web.wait( EC.visibility_of_element_located( (By.XPATH, "//*[contains(text(), 'CANLI DERSİ GÖNDER')]")), 5).click() time.sleep(float(web_wait) / 6) # self.__web.element("//*[contains(text(), 'TAMAM')]").click() self.__web.wait( EC.visibility_of_element_located( (By.XPATH, "//*[contains(text(), 'TAMAM')]")), 5).click() log.write("{}. ders EBA'da kaydedildi: {} ({}, {} - {})".format( lesson['id'], lesson['Canlı Ders Başlığı'], xl.getDateString(lesson['Canlı Ders Tarihi']), xl.getHourString(lesson['Ders Başlangıç']), xl.getHourString(lesson['Ders Bitiş'])))
def waitForSignIn(self, user): if "signin" in self.__driver.current_url: log.write("Zoom'a giriş yapılmamış.", "error") log.write( "Lütfen <red>Zoom</>'a <green>300 saniye</> içinde giriş yapın.", "header") self.login(user) self.__web.wait( EC.element_to_be_clickable((By.ID, 'meetingSaveButton'))) log.write("<green>Zoom'a giriş yapıldı.</>", "header")
def waitForSignIn(self, user): log.write( "Lütfen <red>EBA</>'ya <green>300 saniye</> içinde giriş yapın.", "header") self.__web.wait(EC.element_to_be_clickable((By.ID, 'vc-treeleftmenu')))
web = browser.Browser(user) zoom = zoomClass.Zoom(web) eba = ebaClass.EBA(web) # Zoom girişini yap (tab 1) zoom.getSchedule() # eğer giriş dizini ise kullanıcının giriş yapmasını bekle zoom.waitForSignIn(user) # EBA girişini yap (tab 2) eba.login(user) # başlangıç zamanını yazdır process.startTime() log.write("Kullanıcı: {}".format(user['name']), "header") # eğer silme işlemi ise sadece silme yap if opts.get('delete') != False: zoom.lessonsDelete() eba.lessonsDelete() log.write("Kullanıcının dersleri silinmiştir: {}".format(user['name']), "header") # bitiş zamanını ver farkı yazdır process.finishTime(0, True) # tarayıcı kapatılır web.get().close() web.get().quit()
def finishTime(self, lessons_count, isDelete=False): finish_time = time.time() time_text = time.strftime("%d.%m.%Y, %H:%M:%S", time.localtime()) diff_seconds = finish_time - self.start_time process = time.strftime('%H:%M:%S', time.gmtime(diff_seconds)) print("") log.write("-----------------------------------------------") log.write("Bitiş Zamanı: {}".format(time_text)) log.write("-----------------------------------------------") log.write("Toplam Süre: {}".format(process)) log.write("-----------------------------------------------") if isDelete == False: time_saved = time.strftime( '%H:%M:%S', time.gmtime((lessons_count * normal_lesson_time) - diff_seconds)) log.write("EBABOT ile {} süre kazandınız :)".format(time_saved)) log.write("-----------------------------------------------") print("")