python | 实现shua课系统
import threading import time import datetime import schedule from selenium import webdriver chrome_driver=r"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/chrome/chromedriver" browser=webdriver.Chrome(executable_path=chrome_driver) # 请求登陆页面 browser.get('访问页面url') # 登陆 def login(number, password): phone_name = browser.find_element_by_id('login') # 通过id定位,手机号码 phone_name.click() phone_number = browser.find_element_by_id('uname') # 通过id定位,账号 pwd = browser.find_element_by_id('pwd') # 密码 login_btn = browser.find_element_by_id('loginBypwdBtn') # 登陆按钮 phone_number.send_keys(number) # 输入手机号码或账号密码 pwd.send_keys(password) # 输入密码 login_btn.click() # 点击登陆按钮 time.sleep(3) xuexi = browser.find_element_by_class_name('button') # 定位进入学习按钮 xuexi.click() # 点击学习按钮 time.sleep(3) # 转到播放视频页面 def to_course(): for i in range(1,49): # 获取当前时间 time.sleep(3) browser.get('https://degree.qingshuxuetang.com/gd/Student/CourseShow?teachPlanId=310&periodId=13&courseId=839&cw_nodeId=kcjs_%s'%(i)) video = browser.find_element_by_id('playerContainer') # 定位视频窗口 video.click() # 点击播放 time.sleep(3600) schedule.every(1).minutes.do(to_course) # if datetime.datetime.now()== datetime.datetime.now()+datetime.timedelta(hours=1): # 当前视频播放结束,点击下一节 # js = "document.ElementById('nextBtn').click()" # js脚本 # browser.execute_script(js) # if i ==49: # pass # return # try: # video = browser.find_element_by_id('playerContainer') # 定位视频窗口 # video.click() # 点击播放 # except: # pass # # try: # # video = browser.find_element_by_id('mediaplayer') # 定位视频窗口 # # 获取当前播放的进度 # current_time = browser.find_element_by_class_name('timetextchpsuydshice').get_attribute('textContent') # print(current_time,33333333333333333333) # textContent=current_time.split() # if textContent[0] == textContent[1]: # # 当前视频播放结束,点击下一节 # # js = "document.ElementById('nextBtn').click()" # js脚本 # # browser.execute_script(js) # res =False # time.sleep(10) # 10秒检测一次 # # except: # current_time = '00:00' # total_time = '00:01' # # if i ==3: # break # current = browser.current_window_handle # 当前页面的句柄 # key = browser.find_element_by_partial_link_text(key) # 找到课程 # key.click() # 跳转到播放视频页面 # time.sleep(1) # 等待页面加载 # # 因为跳转到新的页面,所以browser要切换到新的页面操作 # handles = browser.window_handles # for handle in handles: # if handle != current: # browser.switch_to.window(handle) # time.sleep(10) # try: # video = browser.find_element_by_id('mediaplayer') # 定位视频窗口 # video.click() # 点击播放 # except: # pass # 判断是否有答题窗口弹出 # def is_exist(): # while True: # try: # browser.switch_to.default_content() # browser.switch_to.frame('tmDialog_iframe') # 答题窗口在另一个frame里面,要切换 # box = browser.find_elements_by_class_name('answerOption') # 答题列表 # radio = box[0].find_element_by_tag_name('input') # 找到第一个选项 # radio.click() # 选择 # browser.switch_to.default_content() # browser.find_element_by_link_text('关闭').click() # 关闭答题窗口 # # except: # browser.switch_to.parent_frame() # 没有弹出,切换回本来的frame # time.sleep(5) # 判断当前视频是否结束 # def is_end(): # while True: # try: # video = browser.find_element_by_id('mediaplayer') # 定位视频窗口 # # 获取当前播放的进度 # current_time = video.find_element_by_class_name('currentTime').get_attribute('textContent') # # 该视频的总时间 # total_time = video.find_element_by_class_name('duration').get_attribute('textContent') # print(current_time, total_time) # if current_time == total_time: # # 当前视频播放结束,点击下一节 # js = "document.ElementById('nextBtn').click()" # js脚本 # browser.execute_script(js) # # time.sleep(10) # 10秒检测一次 # # except: # current_time = '00:00' # total_time = '00:01' if __name__ == '__main__': ''' number=''#手机号码 password=''#密码 key=''#课程名称,可以部分名字 ''' login("账号", "密码") to_course() # 开两个线程 # t1 = threading.Thread(target=is_exist) # t2 = threading.Thread(target=is_end) # t2.start() # time.sleep(3) # t1.start() # t2.join() # t1.join()