Python Selenium UI 实现视频自动化播放

Python Selenium UI 实现视频自动化播放

1.需求:实现某一课程自动播放
Python Selenium UI 实现视频自动化播放_第1张图片

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from PIL import Image
import time
import ddddocr
headers={"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"}

# 自动化进入网页
s = Service(r"F:\Course\edutest\chromedriver.exe")
driver = webdriver.Chrome(service=s)
driver.get('http://202.197.98.53:8888/LMS/login.do?redirectUrl=http://202.197.98.53:8888/LMS/study/course/onlineCourse/detail.do?id=148')
driver.refresh()  # 刷新页面
driver.maximize_window()  # 浏览器最大化
# 获取验证码的图片,并进行识别,将识别的结果,输入到验证码输入框中
# 对当前页面进行截图
driver.save_screenshot('login.png')
# 选择验证码图片的元素
yzm_btn = driver.find_element_by_id('imgObj')
# 获取图片元素的位置
loc = yzm_btn.location
# 获取图片的宽高
size = yzm_btn.size
# 获取验证码上下左右的位置,电脑的缩放比例125%(100%就不需要乘),需要乘以1.25,否则会出现定位不准确
left = loc['x']
top = loc['y']
right = (loc['x'] + size['width'])
botom = (loc['y'] + size['height'])
val = (left, top, right, botom)         # 得到左上右下的值,顺序固定
# 打开网页截图
login_pic = Image.open('login.png')
# 通过左上右下的值,去截取验证码
yzm_pic = login_pic.crop(val)
# 保存验证码
yzm_pic.save('yzm.png')
# 识别验证码
ocr = ddddocr.DdddOcr(old=True)
with open("yzm.png", 'rb') as f:
    image = f.read()
res = ocr.classification(image)
# 填充用户名 密码 验证码
driver.find_element_by_name('txt_loginName').send_keys("账号")
driver.find_element_by_name('txt_password').send_keys("密码")
driver.find_element_by_name("txt_code").send_keys(res)
# 点击登录,登录成功
driver.find_element_by_class_name("login_button").click()
# 点击我的专业课程
driver.find_element_by_link_text("我的专业课程").click()
# 点击计算机网络原理
time.sleep(2)
driver.find_element_by_xpath('//*[@id="courseList"]/li[2]/table/tbody/tr/td[1]/a/img').click()
# 点击前去学习
time.sleep(2)
driver.find_element_by_xpath('//button[@class="btn-warning btn btn-block"]').click()
# 点击开始学习 进入新页面
time.sleep(2)
handles = driver.window_handles          #获取当前浏览器的所有窗口句柄
driver.switch_to.window(handles[-1])     #切换到最新打开的窗口
driver.find_element_by_xpath('//div[@class="r"]/a[@class="btn-danger"]/span[@id="btn_openCourse_2222"]').click()
# 循环播放所有课程目录
time.sleep(2)
handles = driver.window_handles          #获取当前浏览器的所有窗口句柄
driver.switch_to.window(handles[-1])     #切换到最新打开的窗口
# 第一课 处理frame
driver.switch_to.window(driver.window_handles[-1])
print('------------数据结构与算法第1课播放开始2700s------------------')
driver.find_element_by_xpath('/html/body/div[3]/ul/li[1]/a').click()
time.sleep(2700)
print('------------数据结构与算法第1课播放完毕------------------')
driver.find_element_by_xpath('/html/body/div[3]/ul/li[2]/a').click()
time.sleep(3480)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[3]/a').click()
time.sleep(2760)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[4]/a').click()
time.sleep(2520)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[5]/a').click()
time.sleep(2820)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[6]/a').click()
time.sleep(2820)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[7]/a').click()
time.sleep(2880)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[8]/a').click()
time.sleep(2640)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[9]/a').click()
time.sleep(2640)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[10]/a').click()
time.sleep(2700)
print('------------第10课播放完毕------------------')
driver.find_element_by_xpath('/html/body/div[3]/ul/li[11]/a').click()
time.sleep(2760)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[12]/a').click()
time.sleep(2940)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[13]/a').click()
time.sleep(2580)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[14]/a').click()
time.sleep(3060)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[15]/a').click()
time.sleep(2940)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[16]/a').click()
time.sleep(2460)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[17]/a').click()
time.sleep(3060)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[18]/a').click()
time.sleep(2580)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[19]/a').click()
time.sleep(2820)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[20]/a').click()
time.sleep(3600)
print('--------已播放至第20课--------')
driver.find_element_by_xpath('/html/body/div[3]/ul/li[21]/a').click()
time.sleep(3000)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[22]/a').click()
time.sleep(2040)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[23]/a').click()
time.sleep(2700)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[24]/a').click()
time.sleep(2160)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[25]/a').click()
time.sleep(2700)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[26]/a').click()
time.sleep(3060)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[27]/a').click()
time.sleep(2520)
print('------------数据结构与算法第27课播放完毕------------------')
driver.find_element_by_xpath('/html/body/div[3]/ul/li[28]/a').click()
time.sleep(2580)
print('------------数据结构与算法第二十八课播放完毕------------------')
driver.find_element_by_xpath('/html/body/div[3]/ul/li[29]/a').click()
time.sleep(4560)
print('------------数据结构与算法第二十九课播放完毕------------------')
driver.find_element_by_xpath('/html/body/div[3]/ul/li[30]/a').click()
time.sleep(3720)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[37]/a').click()
time.sleep(3720)
driver.find_element_by_xpath('/html/body/div[3]/ul/li[38]/a').click()
time.sleep(3720)
print('------------数据结构与算法播放完毕------------------')
driver.quit()

运行ok截图
Python Selenium UI 实现视频自动化播放_第2张图片

2.合并播放所有课程
加一个类 tool.py,直接运行该类即可。
import sys

sys.path.append(‘F:\Course\edutest\test’) # 加入路径,添加目录
import test_edu_one
import test_edu_two
import test_edu_frive

你可能感兴趣的:(Python自动化,python,selenium,ui)