python利用selenium库(WEB自动化)完成智慧树自动刷题
这里用的是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自动化)完成智慧树自动刷题相关推荐
- 用Python的selenium库模仿人点击相关网页刷阅读量实例
需要刷的文章列表如下: 这里的代码要用到selenium. selenium是什么呢?它是一个强大的Python库. 它可以做什么呢?它可以用几行代码,控制浏览器,做出自动打开.输入.点击等操作,就像 ...
- python利用selenium和safari浏览器驱动实现新浪微博自动点赞 Demo
import time from selenium import webdriverbrowser = webdriver.Safari() browser.get('http://weibo.com ...
- 基于python中selenium库,实现百度账号的自动登陆
1.如何实现自动打开百度网页并登录账号 首先使用chrome浏览器自动打开百度页面,然后寻找到登陆按键的节点元素,并实现点击.接着,找到用户名登陆的节点元素,实现扫码登陆到用户名登陆的切换.然后,找到 ...
- pythonselenium教程模拟鼠标和键盘_【02篇】python+selenium实现Web自动化:鼠标操作和键盘操作!...
一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第二篇博 ...
- python画笑脸-python 利用turtle库绘制笑脸和哭脸的例子
我就废话不多说了,直接上代码吧! import turtle turtle.pensize(5) turtle.pencolor("yellow") turtle.fillcolo ...
- python turtle画彩虹-Python利用turtle库绘制彩虹代码示例_天津SEO
天津SEO RGB模型:光的三原色,共同决定色相 HSB/HSV模型:H色彩,S深浅,B饱和度,H决定色相 需要将HSB模型转换为RGB模型 代码示例: #-*- coding:utf-8 –*- f ...
- python画图代码彩虹-Python利用turtle库绘制彩虹代码示例
语言:Python IDE:Python.IDE 需求 做出彩虹效果 颜色空间 RGB模型:光的三原色,共同决定色相 HSB/HSV模型:H色彩,S深浅,B饱和度,H决定色相 需要将HSB模型转换为R ...
- py之textgenrnn:Python利用textgenrnn库实现训练文本生成网络
py之textgenrnn:Python利用textgenrnn库实现训练文本生成网络 目录 输出结果 实现代码 输出结果 实现代码 #textgenrnn:利用textgenrnn实现训练文本生成网 ...
- python watchdog占用,python基于watchdog库全自动化监控目录文件
楔子 有些时候我们需要对一个目录进行监控,检测其内部是否有文件的新增.删除.以及每个文件的内容是否发生变化,这个时候如果是你的话,你会选择怎么做呢? 显然也是一个比较麻烦的工作,倒不是说难,主要是比较 ...
最新文章
- win10 安装xilinx 14.7 之后打开new project 奔溃解决方法
- Openlayers 2.X加载高德地图
- 四种利用C#播放声音的方法
- Apache Maven 3.0.3 (yum) 安裝 (CentOS 6.4 x64)
- 最大功率点跟踪测试软件,最大功率点追踪
- 深度学习非自回归语音合成与自回归语音合成对比
- ABAQUS中The analysis may need a large number of increments (more than 20,000,000)...错误的解决方法
- struts2框架入门(基于maven)
- Vue + element + Springboot 通过邮箱找回密码
- matlab hold all,Matlab中的命令hold on hold off | 学步园
- 用Eclipse开发Java语言程序,32单片机,51单片机和C语言程序(全部使用开源软件)
- 谷歌浏览器网页翻译插件
- 公司-摩拜单车:摩拜单车
- Python turtle画小猪佩奇
- 后端返回JSON数组转Tree树形格式,展示到element-ui的tree树形组件
- (已更新)全新商城微信小程序源码支持对接公众号
- GO的gin依赖下载不下来的问题
- Word中插入PDF
- 用Python玩转数据(三)
- 阿里云服务器搭建wordpress个人博客
热门文章
- BurpSuit--Intruder(暴力破解)
- git 删除远程分支报错error: unable to delete ‘origin/xxx‘: remote ref does not exist
- Android 9.0 修改默认壁纸(主壁纸和wapppaper)
- linux7webmin,如何在CentOS 7上安装Webmin
- OKR推进团队的重要性
- 腾讯元老赚够钱后辞职到安徽农村隐居,亲手建造200亩农场
- 测试做得好,犯错少不了【30个最容易犯的错误】谨记
- 一个封锁操作被对wsacancelblockingcall_跳票也传染?育碧看家游戏孤岛惊魂6彩虹六号 封锁宣布延迟发售...
- Android 下载不同版本的platform-tools
- 关联规则算法学习—Apriori