吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3987|回复: 32
收起左侧

[Python 转载] 某在线学习selenium自动学习

   关闭 [复制链接]
Ace803 发表于 2022-6-15 11:43
前言
某天学习py时,被一朋友看见,说你还学习编程啊,我说不是编程,只是了解一下,结果事情就来了,让我给弄个挂机自动学习的
其实我也是刚入门,也没系统性学过,而selenium只是听说过,一点不懂,别人以为你会,就非让你弄。本着学习的心态,试着弄一下,边弄边百度(真的是全百度),问题一大堆,好在最后都解决了
正文
我的chrome没有适合的驱动版本,又不想卸载重装,于是就用了edge,同时将edge停掉了自动更新,防止更新后驱动不能用
使用前,需要先自选课程,多说一句,本来用selenium弄了自选的代码,结果偶尔会报错,就懒得弄了。选好课程后,启动程序将自动学习,直到你的自选课程学完或者学够了50分,程序将停止
为了不影响电脑的前台操作,将窗口后台运行了,并关掉了音量,自己运行时,可以看一下注释,想听声音或者前台运行,可以将相应的代码注释掉就可以了
各位大佬请勿见笑,这是纯百度出来编写的代码
以下为代码
[Python] 纯文本查看 复制代码
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service

def start():
    browser.get("http://www.hbgbzx.gov.cn/login.html")  # 打开干部在线
    time.sleep(3)
    login(account,password)

def login(account,password):
    browser.find_element(By.ID, 'name').send_keys(account)  # 输入账号
    time.sleep(2)
    browser.find_element(By.ID, "password").send_keys(password) # 输入密码
    time.sleep(2)
    browser.find_element(By.XPATH, '//*[@id="form1"]/div/div/ul/li[3]/input').click()   # 点击确定
    time.sleep(3)
    print('------登录成功!!-----')
    browser.switch_to.alert.accept()    # 跳过登陆后的弹窗
    time.sleep(2)
    browser.find_element(By.XPATH, '//*[@id="menu3"]/p').click()  # 打开我的课程
    time.sleep(2)
    browser.find_element(By.XPATH, '//*[@id="sonmenu3"]/div[1]/a').click()  # 打开自选课程
    time.sleep(2)
    study()

def study():
    browser.find_element(By.XPATH, '//*[@id="right"]/div[4]/table/tbody/tr[3]/td/a[1]').click()  # 点击我要学习按钮
    name=browser.find_element(By.XPATH,'//*[@id="right"]/div[4]/table/tbody/tr[1]/td/span').text    # 课程的名字
    # 课程的时长
    minute=browser.find_element(By.XPATH,'//*[@id="right"]/div[4]/table/tbody/tr[2]/td/div[4]/span[2]').text
    time.sleep(2)
    print(f'开始学习!')
    print(f'{name}')
    print(f'时长{minute}')
    browser.switch_to.window(browser.window_handles[1]) # 切换到视频学习网页的页面
    # 跳过网页内的双层iframe嵌套
    browser.switch_to.frame('course_frm')
    browser.switch_to.frame('course_frame')
    browser.find_element(By.XPATH, '/html/body/div/div[3]/div[2]').click()  # 点击开始学习或者继续学习按钮
    time.sleep(3)
    browser.switch_to.window(browser.window_handles[0]) # 切换回自选课程页面
    browser.refresh()   # 刷新网页
    choose(count)

def choose(count):
    # 获取左下角的总分数
    score = browser.find_element(By.XPATH, '//*[@id="xyxx"]/div[4]/span').text
    print(f'现在总分为:{score}')
    # 获取当前学习课程的分数
    # percent = browser.find_element(By.XPATH, '//*[@id="right"]/div[4]/table/tbody/tr[2]/td/div[2]/span/span').text
    # 判断总分数是否大于等于50分,若大于等于50分,则退出程序
    if score<'50.00':
        while True:
            # 将总分数赋值给m,用以判断程序的运行
            time.sleep(60)  # 每60秒刷新一次网页,并记录刷新网页的次数
            browser.refresh()
            count += 1
            print(f'第{count}次刷新页面,60秒后再次刷新页面')
            # 页面刷新后将总分数再次赋值给x,用以判断是否调用study()函数
            x=browser.find_element(By.XPATH, '//*[@id="xyxx"]/div[4]/span').text
            # 学习进度情况
            percent=browser.find_element(By.XPATH,'//*[@id="right"]/div[4]/table/tbody/tr[3]/td/span').text
            print(f'当前学习进度为:{percent}')
            if x<'50.00':
                study()
            # elif m<x:
            #     study()
            else:
                print('已经大于50分,程序退出')
                break
    else:
        browser.quit()
        print('已经学习了50分,本次学习结束')

if __name__ == '__main__':
    account=input('请输入你的账号:')
    password=input('请输入你的密码:')
    count = 0
    edge_driver = Service(r"E:\\edgedriver\\msedgedriver.exe")  # 调用edge浏览器的驱动程序
    option=webdriver.EdgeOptions()
    option.use_chromium=True
    option.add_argument('headless')     # 将浏览器后台运行,不影响前台的操作
    option.add_argument('disable-gpu')
    option.add_argument('--mute-audio') # 关闭浏览器内的声音
    browser = webdriver.Edge(service=edge_driver,options=option)
    start()

免费评分

参与人数 4吾爱币 +9 热心值 +3 收起 理由
xq2581 + 1 我很赞同!
kongdang1 + 1 用心讨论,共获提升!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
kiikjj + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| Ace803 发表于 2022-6-26 19:26
xlose13720 发表于 2022-6-26 19:20
听课过程中的题这个有什么办法能跳过呢,我把看奶的力气用出来,大概明白这些代码就是设定点某个控件,然 ...

browser.switch_to.alert.accept()这个是关闭跳出的弹窗,不知道你的网站是不是一样的
 楼主| Ace803 发表于 2022-6-22 16:54
xlose13720 发表于 2022-6-22 16:46
上次我用另外一个代码最小化就停了,用的谷歌浏览器,难道是代码问题

那就不知道了,我自己的实测了的,没有影响
没用chrome是因为没有合适的驱动,但是又不想重装就用了edge的
dian01 发表于 2022-6-15 12:16
py的,本来打算看看是不是能挂自动教育的,嗯,还要去装环境,不过感谢撸主了。
 楼主| Ace803 发表于 2022-6-15 12:17
dian01 发表于 2022-6-15 12:16
py的,本来打算看看是不是能挂自动教育的,嗯,还要去装环境,不过感谢撸主了。

应该也是可以的
aidjgo 发表于 2022-6-15 12:53
感谢分享,学习学习
sp0770 发表于 2022-6-15 14:09
向高手们致敬,可惜我不会
dft2010 发表于 2022-6-15 15:26
关注一下,学习一下
xlose13720 发表于 2022-6-22 08:13
我记得这个办法浏览器必须在前台,不能最小化,影响用电脑
 楼主| Ace803 发表于 2022-6-22 08:21
xlose13720 发表于 2022-6-22 08:13
我记得这个办法浏览器必须在前台,不能最小化,影响用电脑

试过了,可以后台学习,并且关闭声音,完全不影响前台电脑的使用
mizar 发表于 2022-6-22 09:08
中间有弹出窗口验证人还在不在的。
 楼主| Ace803 发表于 2022-6-22 13:04
mizar 发表于 2022-6-22 09:08
中间有弹出窗口验证人还在不在的。

没有弹窗验证
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 22:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表