Python Selenium實現自動觀看學習通視訊

專注的阿熊發表於2021-12-01

import time

from selenium.webdriver import Chrome

web = Chrome()

web.get(')

# 1. 登入

phone = web.find_element_by_class_name('ipt-tel')

pwd = web.find_element_by_class_name('ipt-pwd')

login = web.find_element_by_class_name('btn-big-blue')

phone.send_keys(' 手機號碼 ')

pwd.send_keys(' 密碼 ')

login.click()

time.sleep(2)

# 完成一個頁面的所有未完成的知識點

def view_one_page_points():

     while (1):

         iframe = web.find_element_by_id('iframe')  # 每次重新整理後,都要進入內部 iframe

         web.switch_to.frame(iframe)

         # 篩選,去除已完成的知識點

         k_points = web.find_elements_by_css_selector('div.ans-attach-ct:not(.ans-job-finished)')

         num = len(k_points)

         flag = False

         for i in range(0, num):

             if i == (num - 1):  # 是最後一個,表示該頁刷完

                 flag = True

             k_point = k_points[i]

             # 查詢任務圖示個數, 1 為知識點, 0 為不是知識點

             icon_num = len(k_point.find_elements_by_xpath('./div[contains(@class,"ans-job-icon")]'))

             if icon_num == 0:  # 再次篩選,去除不是知識點的 div

                 continue

             # 進行視訊的播放

             video_iframe = k_point.find_element_by_xpath('./iframe')  # 視訊 iframe

             print(video_iframe)

             time.sleep(2)

             web.switch_to.frame(video_iframe)  # 進入視訊 iframe

             time.sleep(2)

             web.find_element_by_class_name('vjs-big-play-button').click()  # 點選播放按鈕

             time.sleep(1)

             web.find_element_by_xpath('//*[@id="video"]/div[5]/div[6]/button').click()  # 靜音

             # 播放和暫停按鈕

             pause_btn = web.find_element_by_xpath('//button[contains(@class,"vjs-play-control")and '

                                                   'contains(@class,"vjs-control")and contains(@class,"vjs-button")]')

             while (1):  # 播放等待

                 time.sleep(1)  # 1 秒,檢查視訊是否播放完畢

                 if (pause_btn.get_attribute('title') ==外匯跟單gendan5.com " 重播 "):  # 點選後播放,即播放完畢狀態

                     break

             print(' 視訊播放完畢 ')

             # 視訊播放完畢,退出播放 iframe ,然後退出迴圈,再次查詢該頁面的所有知識點( k_points)

             web.switch_to.default_content()

             print(' 退出知識點 iframe')

             time.sleep(2)

             web.refresh()  # 重新整理頁面,之後需重新進入 iframe

             time.sleep(2)

             print(' 重新整理頁面 ')

             break

         if flag:  # 該頁面知識點播放完畢

             break

     pass

while (1):

     # 進入 iframe

     frame_content = web.find_element_by_xpath('//*[@id="frame_content-zj"]')

     web.switch_to.frame(frame_content)

     time.sleep(2)

     # 查詢所有未完成的知識點頁面

     all_no_list = web.find_elements_by_xpath('//span[@class="catalog_points_yi"]')

     list_num = len(all_no_list)  # 知識點頁面個數

     if list_num == 0:   # 沒有知識點頁面,即全部刷完

         break

     # 跳轉到第一個知識點頁面

     all_no_list[0].click()

     web.switch_to.window(web.window_handles[-1])  # 跳轉到該知識點介面

     time.sleep(5)

     #####

     view_one_page_points()  # 播放該知識點頁面的所有未完成的知識點視訊

     #####

     print(' 完成一個知識點頁面 ...')

     web.close()  # 關閉當前視窗

     # 該頁面知識點完畢,關閉當前視窗,選擇下一個知識點視窗

     web.switch_to.window(web.window_handles[0])  # 變更視角到該課程主介面

     time.sleep(1)

     # 重新整理頁面

     web.refresh()

     time.sleep(2)

     print(' 重新整理主頁面 ')

     pass


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2845222/,如需轉載,請註明出處,否則將追究法律責任。

相關文章