当前位置:首页 » 《资源分享》 » 正文

# 知到(智慧树)刷课 # python # DrissionPage # Actions

18 人参与  2024年12月23日 08:01  分类 : 《资源分享》  评论

点击全文阅读


应用场景:(知到)智慧树刷课,最近期末了,但是好多课没看,就做了一个智慧树刷课程序,由于时间比较紧,可能会出现一些场景不能正常运行。但是正常使用没什么问题。

代码作用:可以索引找到没有观看的视频自动打开观看,中间出现选择题人机检测会自动选择正确选项并关闭播放视频,进度达到后会自动跳转下一个未达标的视频。

代码使用:

导入DrissionPage模块——复制下方代码——运行——输入需刷课程全称——回车即可

代码运行过程:

在共享课下方找到相关课程后进入——关闭弹出学前须知串口(如果没有关闭成功需手动关闭)——遍历课程——找到没有达标的课程——进入课程——播放视频并静音并X1.5——出现选择时选出正确选项并关闭并播放视频——视频达标后——向下选择未达标的视频并播放…………

应用限制:浏览器要在后台工作,由于作者学习通上面课程中间弹出的都是单选题,所有此代码没有添加多选的情况。

适合这种形式,因为是以@播放图标和后面的进度是否完成定位的。没有两个东西代码并不能运行

运行结果:

刷课结束时会出现:

from DrissionPage import ChromiumPagefrom DrissionPage.common import Actionsfrom DrissionPage.errors import ElementNotFoundErrorclass_name = input('课程名称:')rule_time = 3seep_time = 2tab_1 = ChromiumPage().latest_tabac = Actions(tab_1)# 进入相应课堂def Input_class(tab, class_name):    in_class_s = tab.ele('@id=sharingClassed', timeout=rule_time)    if in_class_s:        in_class = in_class_s.ele(f'@text()={class_name}', timeout=rule_time)        if in_class:            try:                in_class.click(timeout=rule_time)                print(f'成功点击课堂:{class_name}')                return 1            except ElementNotFoundError as e:                print(f'点击课堂时发生错误:{e}')                return 0        else:            print(f'没有找到相应课堂:{class_name}')            return 0    else:        print('没找到共享课堂?')        return 0# 取消弹出学前必读0.0def Out_window_0():    top_nf = tab_1.ele('x://*[@id="app"]/div/div[6]', timeout=rule_time)    length = len(str(top_nf))    if length == 64:        top_out = tab_1.ele('@class=iconfont iconguanbi', timeout=rule_time)        if top_out:            try:                top_out.click(timeout=rule_time)                print('点击取消学前必读标签页成功!')                return 1            except ElementNotFoundError as e:                print(f'点击取消学前必读标签页错误{e}')                return 0        else:            print('没有找到取消标签页的X号')            return 0    else:        print('无需取消标签页')        return 0def Watch_video():    tab_1.ele('x://*[@id="vjs_container"]/div[8]').click()    print('选择选后成功播放视频')def Watch_video_1():    tab_1.ele('@class=volumeBox').click()    tab_1.ele('@class=playButton').click()    tab_1.ele('@class=speedBox').click()    tab_1.ele('@text()=X 1.5').click()    print('点击观看、静音、1.5倍成功')def Tell_pick():    have = tab_1.ele('@aria-label=弹题测验')    picks = tab_1.eles('@class=icon topic-option')    if have:        a = picks[0]        if a:            a.click()            print('成功引出正确选项')        else:            print('没有选项A')        tur_pick = tab_1.ele('@class=answer')        if tur_pick:            pick = tur_pick.text            return pick[5:6]    else:        print('没有选择题1.0?')def Pick_one(pick):    have = tab_1.ele('@aria-label=弹题测验')    close = have.ele('@class=el-dialog__headerbtn')    picks = tab_1.eles('@class=icon topic-option')    if have and close:        if pick == 'A':            picks[0].click()            close.click()        elif pick == 'B':            picks[1].click()            close.click()        elif pick == 'C':            picks[2].click()            close.click()        elif pick == 'D':            picks[3].click()            close.click()    else:        print('没有选择题2.0?或者没有找到关闭按钮')def In_to_need_watch_video():    our_video = tab_1.eles('@class=fl cataloguediv-c', timeout=rule_time)    if our_video:        to_time = 0        for i in our_video:            need_video = i.ele('@class=time_ico_half fl', timeout=rule_time)            out_video = i.ele('@class=fl time_icofinish', timeout=rule_time)            if not need_video and not out_video:                continue            if need_video and out_video:                print(i.text + '已观看')            else:                print(i.text + '未观看')                try:                    need_video.click(timeout=rule_time)                    tab_1.wait(1)           # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 重要,依据网速设置时间                    Watch_video_1()                    print(i.text + '点击观看视频成功')                except ElementNotFoundError:                    print(i.text + '点击观看视频错误?')                while True:                    have = tab_1.ele('@aria-label=弹题测验')                    if have:                        Pick_one(Tell_pick())                        tab_1.wait(rule_time)                        Watch_video()                    need_video = i.ele('@class=time_ico_half fl', timeout=rule_time)                    out_video = i.ele('@class=fl time_icofinish', timeout=rule_time)                    tab_1.wait(rule_time)                    if need_video and out_video:                        to_time = 1                        break            if to_time == 1:                print(i.text + '播放完毕')                continue    else:        print('没有视频元素??')print(Input_class(tab=tab_1, class_name=class_name))tab_1.wait(seep_time)print(Out_window_0())tab_1.wait(seep_time)print(In_to_need_watch_video())


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/205487.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1