学习通刷课脚本(可以直接用)

发布于:2022-10-17 ⋅ 阅读:(8220) ⋅ 点赞:(1)

找驱动和Xpath的方法在最底下

下个所用的浏览器驱动然后换一下网址,账号密码,和前面的部分元素就可以用了,有问题评论问

私信也可以

点个赞吧,没被赞过很伤心。

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

from selenium.webdriver import Edge
browser=webdriver.Edge('自己下的驱动位置')#前面的edge是edge服务器,也可以换成chrome
url = 'http://passport2.chaoxing.com/login?#打开网址fid=&newversion=true&refer=http://i.chaoxing.com'
webpage=browser.get(url)
# 学校 学号 密码 验证码登陆
def login():
    time.sleep(4)
    inp_1 = '账号'
    inp_2 = '密码'
    Account = browser.find_element(By.ID, "phone")#找账号
    password = browser.find_element(By.ID, "pwd")
    Account.send_keys(inp_1)
    password.send_keys(inp_2)
    browser.find_element(By.ID, "loginBtn").click()
    print("----------正在登陆中----------")


# 进入主页 开始选择课程 xpath匹配
def html_1():
    time.sleep(4)
    browser.switch_to.frame('frame_content')
    browser.find_element(By.XPATH,'自己选的课程的Xpath').click()  # 课程选项的xpath
    print("----------进入课程----------")
    # 选择我需要学的课的xpath
    time.sleep(4)
    browser.switch_to.window(browser.window_handles[1])
    browser.find_element(By.XPATH,'//*[@id="boxscrollleft"]/div/ul[1]/li[2]/a').click()  # 进入章节
    print("----------已进入章节----------")

def html_2():
    browser.switch_to.frame('frame_content-zj')
    # 进入课程中的第一个小节
    time.sleep(4)
    browser.find_element(By.XPATH,'选小节的Xpath').click()  # 开始小节
    print("----------进入小节----------")

# button模拟点击播放
def button():
    time.sleep(4)
    try:
        # 进入frame播放框架
        browser.switch_to.frame("iframe")
        browser.switch_to.frame(0)
        time.sleep(4)  # 此处等待一下就不会报错终止程序
        browser.find_element(By.XPATH,'//*[@id="video"]/button').click()
        print('----------等待播放----------')
        time.sleep(4)
        print("----------课程正在播放中----------")
    except:
        # 回到主框架
        browser.switch_to.default_content()
        print("----------此处不是视频,即将点击下一页----------")
        time.sleep(4)
        browser.find_element(By.XPATH, '//*[@id="right"]').click()
        print("----检测是否有再确定")
        time.sleep(4)
        try:
           browser.find_element(By.XPATH, '//*[@id="mainid"]/div[1]/div/div[3]/a[2]').click()
        except:
            pass
        print("----已进入下一页-----")
        time.sleep(4)
        # 判断完重新回到button函数再进行判断
        button()
# 判断视频是否播放完
def vedio_if():
    time.sleep(4)
    try:
        vedio_stat_time = browser.find_element(By.XPATH,'//*[@id="video"]/div[6]/div[2]/span[2]').get_attribute(
            "textContent")
        vedio_end_time = browser.find_element(By.XPATH,'//*[@id="video"]/div[6]/div[4]/span[2]').get_attribute(
            "textContent")
        print("播放时间:", vedio_stat_time, '结束时间:', vedio_end_time)
        time.sleep(10)
        return vedio_stat_time, vedio_end_time
    except:
        try:
          vedio_stat_time = browser.find_element(By.XPATH, '//*[@id="video"]/div[5]/div[2]/span[2]').get_attribute(
            "textContent")
          vedio_end_time = browser.find_element(By.XPATH, '//*[@id="video"]/div[5]/div[4]/span[2]').get_attribute(
            "textContent")
          print("播放时间:", vedio_stat_time, '结束时间:', vedio_end_time)
          time.sleep(10)
          return vedio_stat_time, vedio_end_time
        except:
            pass

# 判断有第二节课吗有就播放
def vedio_if2(vedio_stat_time, vedio_end_time):
    if vedio_stat_time == vedio_end_time:
        try:
            browser.switch_to.parent_frame()
            browser.switch_to.frame(1)
            browser.find_element(By.XPATH,"//*[@id='video']/button").click()
            time.sleep(4)

        except:
            print("----------没有第二节课了,即将进入下一页----------")


def next_start(vedio_stat_time, vedio_end_time):
    if vedio_stat_time == vedio_end_time:
        try:
            browser.switch_to.default_content()
            print("----------开始点下一页----------")
            time.sleep(4)
            browser.find_element(By.XPATH, '//*[@id="right"]').click()
            time.sleep(4)

        except:
            print("----------课程已播完,无提示----------")


def course():
    while True:
        button()
        time_tuple = vedio_if()
        while time_tuple[0] != time_tuple[1]:
            time_tuple = vedio_if()
            try:
                vedio_if2(time_tuple[0], time_tuple[1])
                if time_tuple[0] == time_tuple[1]:
                    print("----------开始测试第二节课时间----------")
                    time_tuple_2 = vedio_if()
                    while time_tuple_2[0] != time_tuple_2[1]:
                        time_tuple_2 = vedio_if()
                        next_start(time_tuple_2[0], time_tuple_2[1])
            except:
                next_start(time_tuple[0], time_tuple[1])


if __name__ == '__main__':
    login()
    html_1()
    html_2()
    course()

2022.10.14修改,新增如何下载edge驱动

1、查找版本号

 然后点击设置

 2.、去官网下载对应版本驱动

Microsoft Edge WebDriver - Microsoft Edge Developer

 存储在自己可以找到的位置,方便待会更换代码中的驱动位置

查找Xpath

鼠标右键最底下--检查,打开页面如下

点击自己所需要的课程,右边对应灰框就是对应的元素。在元素上右键,找到复制,复制Xpath即可更换代码中的Xpath

2022/10/17

要是真的不会找xpath,

百度链接给一手https://jingyan.baidu.com/article/0a52e3f482e380bf62ed7205.html

本文含有隐藏内容,请 开通VIP 后查看

网站公告

欢迎关注微信公众号 关注公众号领取新人福利

今日签到

点亮在社区的每一天
去签到