这里用的是Chrome浏览器,使用selenium库是需要先安装Chrome的驱动

分析:

selenium库能实现网页自动操作,智慧树每次学习完一小节后都需要点击下一节视频。这里我检测了视频的总播放长度和当前播放的时间长度,每5秒钟检测一次它们是否相同,如果相同就点击下一节视频完成自动化。看视频时也会遇到不定时弹窗,就每隔5秒钟检测是否有弹窗出现,如果有弹窗就点击选项然后关闭。大概的思路就是这样。

如果有什么地方侵权了请联系我删除

我只是为了能和大家一起学习,没有其他意思

#导入库
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
import os
import time# 点击开始
def play():start_status = driver.find_element(By.XPATH, '//div[@id="playButton"]').get_attribute('class')start_button = driver.find_element(By.ID, 'playButton')xuanting = driver.find_element(By.XPATH, '//*[@id="vjs_container"]/div[8]')  # 点击视频jianchetanchuang()  # 检测弹窗time.sleep(2)if start_status.find('playButton') != -1:print('当前静止')xuanting.click()print('点击播放成功')else:print('当前正在播放')# 悬停找到控制台
def openControlsBar():controlsBar = driver.find_element(By.XPATH, ' //div[@id="container"]')ActionChains(driver).move_to_element(controlsBar).perform()  ### 下一个视频
def nextVideo():openControlsBar()nextBtn = driver.find_element(By.XPATH, '//div[@id="nextBtn"]')nextBtn.click()print('切换下一个视频')# 获取当前播放时间
def getCurrentTime():openControlsBar()time = driver.find_element(By.XPATH, '//div[@class="nPlayTime"]/span[1]').textprint('当前播放时间为:' + time)return time# 关闭弹窗继续播放
def pop_up():panduan = driver.find_element(By.XPATH,'//*[@id="playTopic-dialog"]/div/div[2]/div/div[1]/div/div/div[2]/p/span[2]').textif panduan in '判断题':driver.find_element(By.XPATH,'//*[@id="playTopic-dialog"]/div/div[2]/div/div[1]/div/div/div[2]/ul/li[1]/div[2]').click()  # 点击第一个选项driver.find_element(By.XPATH, '//*[@id="playTopic-dialog"]/div/div[3]/span/div').click()  # 点击关闭else:driver.find_element(By.XPATH,'//*[@id="playTopic-dialog"]/div/div[2]/div/div[1]/div/div/div[2]/ul/li[1]').click()  # 点击第一个driver.find_element(By.XPATH, '//*[@id="playTopic-dialog"]/div/div[3]/span/div').click()  # 点击关闭# chuowu = driver.find_element(By.XPATH,'//*[@id="playTopic-dialog"]/div/div[2]/div/div[1]/div/div/div[2]/p/span[1]/span').text#获取是否正确# driver.find_element(By.XPATH,'//*[@id="playTopic-dialog"]/div/div[2]/div/div[1]/div/div/div[2]/ul/li[2]/div[2]')#点击错# if chuowu == '正确':# driver.find_element(By.XPATH,'//*[@id="playTopic-dialog"]/div/div[2]/div/div[1]/div/div/div[2]/ul/li[1]/div[2]')#点击对# driver.find_element(By.XPATH,'//*[@id="playTopic-dialog"]/div/div[3]/span/div').click()#点击关闭# 关闭学前必读
def xueqian():try:# 检测是否有学前必读# 点击×close = driver.find_element(By.XPATH, '// *[ @ id = "app"] / div / div[6] / div[2] / div[1] / i')close.click()print("关闭学前必读成功!")except:print("未发现学前必读")# 获取当前视频总时间
def getTotalTime():openControlsBar()time = driver.find_element(By.XPATH, '//div[@class="nPlayTime"]/span[2]').textprint('本集视频时间为:' + time)return time#控制下面的循环间隔
def sleeptime(hour, min, sec):return hour * 3600 + min * 60 + sec#检测弹窗
def jianchetanchuang():  # 检测弹窗try:pop_up()  # 关闭弹窗print('关闭弹窗完成')except:print('未检测到弹窗')# 不自动关闭浏览器
option = webdriver.ChromeOptions()
option.add_experimental_option("detach", True)
driver = webdriver.Chrome(options=option)
#主程序
driver.get('智慧树视频链接地址')
userName = "填写账号"
passWord = "填写密码"
driver.find_element(By.ID, 'lUsername').send_keys(userName)
driver.find_element(By.ID, 'lPassword').send_keys(passWord)
driver.find_element(By.XPATH, "//span[@class='wall-sub-btn']").click()
time.sleep(2)
yanzhi = driver.find_element(By.XPATH, '/html/body/div[29]/div[2]/div/div/div[1]/span[2]').text
second = sleeptime(0, 0, 5)
if yanzhi == '请完成安全验证':print('完成验证按任意键继续')os.system('pause')# 检测是否看完了while (True):time.sleep(second)  # 5秒执行一次#关闭学前必读xueqian()# 检测弹窗jianchetanchuang()if getCurrentTime() == getTotalTime():nextVideo()time.sleep(5)play()

python利用selenium库(WEB自动化)完成智慧树自动刷题相关推荐

  1. 用Python的selenium库模仿人点击相关网页刷阅读量实例

    需要刷的文章列表如下: 这里的代码要用到selenium. selenium是什么呢?它是一个强大的Python库. 它可以做什么呢?它可以用几行代码,控制浏览器,做出自动打开.输入.点击等操作,就像 ...

  2. python利用selenium和safari浏览器驱动实现新浪微博自动点赞 Demo

    import time from selenium import webdriverbrowser = webdriver.Safari() browser.get('http://weibo.com ...

  3. 基于python中selenium库,实现百度账号的自动登陆

    1.如何实现自动打开百度网页并登录账号 首先使用chrome浏览器自动打开百度页面,然后寻找到登陆按键的节点元素,并实现点击.接着,找到用户名登陆的节点元素,实现扫码登陆到用户名登陆的切换.然后,找到 ...

  4. pythonselenium教程模拟鼠标和键盘_【02篇】python+selenium实现Web自动化:鼠标操作和键盘操作!...

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第二篇博 ...

  5. python画笑脸-python 利用turtle库绘制笑脸和哭脸的例子

    我就废话不多说了,直接上代码吧! import turtle turtle.pensize(5) turtle.pencolor("yellow") turtle.fillcolo ...

  6. python turtle画彩虹-Python利用turtle库绘制彩虹代码示例_天津SEO

    天津SEO RGB模型:光的三原色,共同决定色相 HSB/HSV模型:H色彩,S深浅,B饱和度,H决定色相 需要将HSB模型转换为RGB模型 代码示例: #-*- coding:utf-8 –*- f ...

  7. python画图代码彩虹-Python利用turtle库绘制彩虹代码示例

    语言:Python IDE:Python.IDE 需求 做出彩虹效果 颜色空间 RGB模型:光的三原色,共同决定色相 HSB/HSV模型:H色彩,S深浅,B饱和度,H决定色相 需要将HSB模型转换为R ...

  8. py之textgenrnn:Python利用textgenrnn库实现训练文本生成网络

    py之textgenrnn:Python利用textgenrnn库实现训练文本生成网络 目录 输出结果 实现代码 输出结果 实现代码 #textgenrnn:利用textgenrnn实现训练文本生成网 ...

  9. python watchdog占用,python基于watchdog库全自动化监控目录文件

    楔子 有些时候我们需要对一个目录进行监控,检测其内部是否有文件的新增.删除.以及每个文件的内容是否发生变化,这个时候如果是你的话,你会选择怎么做呢? 显然也是一个比较麻烦的工作,倒不是说难,主要是比较 ...

最新文章

  1. win10 安装xilinx 14.7 之后打开new project 奔溃解决方法
  2. Openlayers 2.X加载高德地图
  3. 四种利用C#播放声音的方法
  4. Apache Maven 3.0.3 (yum) 安裝 (CentOS 6.4 x64)
  5. 最大功率点跟踪测试软件,最大功率点追踪
  6. 深度学习非自回归语音合成与自回归语音合成对比
  7. ABAQUS中The analysis may need a large number of increments (more than 20,000,000)...错误的解决方法
  8. struts2框架入门(基于maven)
  9. Vue + element + Springboot 通过邮箱找回密码
  10. matlab hold all,Matlab中的命令hold on hold off | 学步园
  11. 用Eclipse开发Java语言程序,32单片机,51单片机和C语言程序(全部使用开源软件)
  12. 谷歌浏览器网页翻译插件
  13. 公司-摩拜单车:摩拜单车
  14. Python turtle画小猪佩奇
  15. 后端返回JSON数组转Tree树形格式,展示到element-ui的tree树形组件
  16. (已更新)全新商城微信小程序源码支持对接公众号
  17. GO的gin依赖下载不下来的问题
  18. Word中插入PDF
  19. 用Python玩转数据(三)
  20. 阿里云服务器搭建wordpress个人博客

热门文章

  1. BurpSuit--Intruder(暴力破解)
  2. git 删除远程分支报错error: unable to delete ‘origin/xxx‘: remote ref does not exist
  3. Android 9.0 修改默认壁纸(主壁纸和wapppaper)
  4. linux7webmin,如何在CentOS 7上安装Webmin
  5. OKR推进团队的重要性
  6. 腾讯元老赚够钱后辞职到安徽农村隐居,亲手建造200亩农场
  7. 测试做得好,犯错少不了【30个最容易犯的错误】谨记
  8. 一个封锁操作被对wsacancelblockingcall_跳票也传染?育碧看家游戏孤岛惊魂6彩虹六号 封锁宣布延迟发售...
  9. Android 下载不同版本的platform-tools
  10. 关联规则算法学习—Apriori