遇到的问题看的参考文章如下
知乎 selenium iframe处理
CSDN Selenium在定位的class含有空格的复合类的解决办法
Python+Selenium笔记(九):操作警告和弹出框
Python3 错误和异常的使用
selenium之 玩转鼠标键盘操作(ActionChains)
selenium 浏览器导航操作
根据ManicTime显示,大约花了10小时左右

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import re
import time
studentId = *******
password = '*******'
kaishi = '1.1'
jieshu = '11.1'
def logon(driver):driver.get(r'********')driver.find_element_by_class_name('loginBtn').click()driver.find_element_by_name('uname').send_keys(studentId)driver.find_element_by_name('password').send_keys(password)#input()#driver.switch_to.frame('frame_content')#driver.find_element_by_class_name('clearfix').click()#time.sleep(2)def enterCourse(driver,courseUrl):driver.get(courseUrl)def acquireUnits(driver,startId,endId):   #获取所刷课程url,返回一个列表units = driver.find_elements_by_class_name('units')unitsDict = {}a = 0for i in units:a = a+1z = 0print(i.text.split('\n')[0:2])for i_1 in i.find_elements_by_class_name('articlename'):z += 1unitsDict[f'{str(a)}.{str(z)}'] = i_1.find_element_by_tag_name('a').get_attribute('href')# 将课程链接放入字典中print(f'---{str(a)}.{str(z)}{i_1.text}')# 输出目录unitsId = list(unitsDict.keys())pickUnitsId = unitsId[unitsId.index(startId):unitsId.index(endId)+1]# 挑出所选课程的键pickUnitsObj = [unitsDict[i_2] for i_2 in pickUnitsId]return pickUnitsObjdef initStart(driver,url):  #进入课程,让视频播放driver.get(url)for i in range(2,4):try:time.sleep(2)driver.switch_to.frame('iframe')  #切换视频frameiframe = driver.find_element_by_css_selector(".ans-attach-online.ans-insertvideo-online")  #定位播放器位置driver.switch_to.frame(iframe)  #切换播放器iframedriver.find_element_by_css_selector(".vjs-big-play-button").click()  #点击播放#paused = driver.find_element_by_xpath('//*[@id="video"]/div[4]/button[1]') #确定播放按钮#ActionChains(driver).move_to_element(paused)time.sleep(3)driver.find_element_by_xpath('//*[@id="video"]/div[4]/button[1]').click()time.sleep(3)return driver.find_element_by_xpath('//*[@id="video"]/div[4]/div[4]/span[2]').textbreakexcept Exception as e:print(e)driver.get(url)time.sleep(1)driver.find_element_by_id(f'dct{i}').click()print("本页非播放播放页,切换")def test(driver):   #破解测试题,目前只有判断题try:for i in driver.find_elements_by_name("ans-videoquiz-opt"):  #判断题对错元素i.click()driver.find_element_by_class_name('ans-videoquiz-submit').click() #提交答案元素time.sleep(1)try:driver.find_element_by_class_name('ans-videoquiz-submit').click()except Exception as e:if "Alert" == str(e).split(' ')[0]:driver.switch_to.alert.accept()else:print(e)except:passdef check(driver):try:if driver.find_element_by_xpath('//*[@id="video"]/div[4]/button[1]/span[2]').text == '播放':try:driver.find_element_by_xpath('//*[@id="video"]/div[4]/button[1]').click()#用于检测是否在播放,如果无法点击,判断是否遇到题目return Falseexcept:test(driver)elif driver.find_element_by_xpath('//*[@id="video"]/div[4]/button[1]/span[2]').text == '重播':return Trueelse:return Falseexcept Exception as e: print(e)return Falsedef main():driver=webdriver.Chrome()  logon(driver)enterCourse(driver,str(input('请输入课程url:\n')))time.sleep(1)units = acquireUnits(driver,kaishi,jieshu)for i in units:try:allTime = initStart(driver,units[i])print(f'当前视频时间:{allTime}')allTime = int(allTime[:2]) * 60 + int(allTime[-2:])while True:if check(driver):print("本视频结束,进入下一个")breaktime.sleep(5)except:breakif __name__ == "__main__":driver=webdriver.Chrome()  logon(driver)enterCourse(driver,str(input('请输入课程url:\n')))time.sleep(1)units = acquireUnits(driver,kaishi,jieshu)for i in units:try:allTime = initStart(driver,units[i])print(f'当前视频时间:{allTime}')allTime = int(allTime[:2]) * 60 + int(allTime[-2:])while True:if check(driver):print("本视频结束,进入下一个")breaktime.sleep(5)except:break

刷网课seleinum 小程序相关推荐

  1. 使用 软考免费真题app刷题库 手机小程序版

    方案1: APP刷真题(免费真题app) 手机软件:软考题库(ios)/希赛软考助手(安卓版) 软考题库免费真题app,含有历年真题.模拟考试.高频考点.知识点整理,还有收藏功能,错题记录功能等等.有 ...

  2. taro 重新加载小程序_taro-music一款开源网易云音乐小程序

    简介 taro-music 是基于taro + taro-ui + redux + react-hooks + typescript 开发的网易云音乐小程序,目前正在使用react-hooks重构中. ...

  3. 前一段时间比较火的刷网课平台源码,带数据库和教程

    前一段时间比较火的刷网课平台源码,带数据库和教程. 好在疫情已经结束了,希望今后世上再无网课. 这个代码免费提供给大家学习开发用吧,作为一个php的入门学习案例用用还可以. 使用办法 网站根目录解压 ...

  4. 最详细新版网课联盟27刷网课平台源码+安装教程+最新模板+下载地址

    新版网课联盟27刷网课平台源码+安装教程+最新模板 第一步:准备一个服务器+域名 没有域名暂时使用服务器网址也可以 第二步:上传文件 上传文件到wwwroot上面,进行解压 第三步:进行防伪静态设置: ...

  5. 第7课 微信小程序实现图片搜索器案例:

    第7课 微信小程序实现图片搜索器案例: 效果图如下: 手机运行效果: 来我们来看看代码的全局样式: 首先在app.json内的pages把需要的index1.index2页面注册 之后我们只需写ind ...

  6. 第21课 微信小程序视频标签显示弹幕

    第21课 微信小程序视频标签显示弹幕 效果图如下: wxml代码如下: <videosrc="http://wxsnsdy.tc.qq.com/105/20210/snsdyvideo ...

  7. 开源 | 智能家居场景,基于 AriKiss 配网的微信小程序

    一次偶然的机会,群里某开发者问我为什么他的微信配网出问题了,我跟着回复了些问题,发现并不是那么简单,于是乎帮这位朋友适配了下并成功了,决定在全网首个开源可实现Airkiss配网的微信小程序. 获取源码 ...

  8. 网易云音乐小程序,带后台(SpringBoot)

    目录 1.简介 2.技术栈 3.环境 4.项目后台配置 5.项目展示 6.下载地址 1.简介 此系统是仿网易云音乐 网易云音乐是一款专注于发现与分享的音乐产品,依托专业音乐人.DJ.好友推荐及社交功能 ...

  9. 第19课 微信小程序安装使用mpvue脚手架

    第19课 微信小程序安装使用mpvue脚手架: 详情地址:http://mpvue.com/mpvue/quickstart/ 安装前检查环境: 安装脚手架之前需要电脑已安装node与npm 首先按住 ...

  10. 简单的仿网易云音乐小程序(总结)

    简单的仿网易云音乐小程序(总结) 这个小程序学到了以下知识点 配置网络请求 进行网络请求 进行音乐播放 进行模版使用 各种页面触发事件 输入框的使用 简单的自定义tab页面切换 导航的数据传输

最新文章

  1. tomcat https ssl测试
  2. C语言函数集(二十一)
  3. java chunked 解码_模拟http请求 带 chunked解析办法一
  4. FreeCodeCamp 中级算法(个人向)
  5. matlab学习记录之基本操作整理
  6. java shape用法_Java PShape.scale方法代码示例
  7. Java并发编程之ConcurrentHashMap
  8. 体验.NET5 RC1极致性能,你也要“卧槽”!
  9. 提升对前端的认知,不得不了解Web API的DOM和BOM
  10. java stream filter map collector使用
  11. C#中的i++和++i
  12. 支付宝上线“时间银行”:未来养老不用愁了
  13. Java取得操作系统的临时目录
  14. eclipse中文语言包 离线安装
  15. 基于51单片机的交通灯控制设计
  16. 计算机技术排除故障网站有哪些,电脑技术交流之常见故障排除【详解】
  17. ddos硬件防火墙(DDOS硬件防火墙)
  18. iOS之UITableViewController的使用
  19. 【六类网线的制作方法】
  20. doNet面试宝典-常见整理(重复率高)

热门文章

  1. linux shell 判断ELF文件,linux file命令查看elf文件信息
  2. Java 学生管理系统 GUI txt文件存储
  3. Python爬虫采集网易云音乐热评实战
  4. global mapper将cad格式数据框选范围导出高质量图片
  5. 腾跃英语计算机学院微信公众号,英语四级报名_微信还能这么玩:Geek大学生搭建英语课堂互动系统_沪江英语...
  6. 现有Unity项目修改渲染管线
  7. 2022年6月深圳地区数据分析师认证(CPDA),进入了解
  8. SARIMA时间序列模型预测城市房价数据
  9. 2021秋招IC验证面经-ARM中国/中科芯/飞腾/地平线/中兴
  10. 史上最详细的Hadoop环境搭建