自动评分工具 - 100分助手
自动评分工具 - 100分助手
这是一个使用 Python 和 Selenium 开发的自动评分工具,旨在帮助教师快速批改学生作业,自动打分,提高工作效率。
功能介绍
- 自动登录评分系统
- 自动读取作业内容
- 自动打分(可自定义分数范围)
- 自动提交评分结果
- 暂停/继续功能
- 运行状态实时显示
使用方法
- 安装必要的库:
pip install selenium
- 配置 Chrome 浏览器调试模式:
- 打开 Chrome 浏览器,输入
chrome://flags/#remote-debugging-port并启用 - 在地址栏输入
chrome://inspect/#devices查看调试端口,通常为9222
- 打开 Chrome 浏览器,输入
- 将
options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")中的端口号改为你的调试端口 - 运行代码,点击
开始运行按钮 - 在浏览器中登录评分系统
- 代码会自动开始评分
- 可使用
暂停运行按钮暂停评分,使用继续运行按钮继续评分
代码
import os
import time
import random
import tkinter as tk
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from threading import Thread
class AutoScore100:
def __init__(self):
self.running = False
self.paused = False
self.browser = None
self.thread = None
self.root = tk.Tk()
self.root.title('自动评分—100')
self.root.geometry('300x250')
self.start_button = tk.Button(self.root, text='开始运行', command=self.start_program)
self.start_button.pack(pady=10)
self.running_label = tk.Label(self.root, text='')
self.running_label.pack(pady=10)
self.pause_button = tk.Button(self.root, text='暂停运行', command=self.pause_program)
self.pause_button.pack(pady=10)
self.pause_button.config(state='disabled')
self.resume_button = tk.Button(self.root, text='继续运行', command=self.resume_program)
self.resume_button.pack(pady=10)
self.resume_button.config(state='disabled')
def start_program(self):
if self.running:
return
self.running = True
self.thread = Thread(target=self.run_program)
self.thread.start()
self.start_button.config(state='disabled')
self.pause_button.config(state='normal')
def pause_program(self):
if not self.running or self.paused:
return
self.paused = True
self.pause_button.config(state='disabled')
self.resume_button.config(state='normal')
self.update_running_label('已暂停')
def resume_program(self):
if not self.running or not self.paused:
return
self.paused = False
self.resume_button.config(state='disabled')
self.pause_button.config(state='normal')
self.update_running_label('打分中...')
def update_running_label(self, text):
self.running_label.config(text=text)
def run_program(self):
options = Options()
options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
try:
self.browser = webdriver.Chrome(options=options)
except:
os.system(r'start chrome --remote-debugging-port=9222 --user-data-dir="D:\评阅用"')
time.sleep(5)
self.browser = webdriver.Chrome(options=options)
while True:
try:
if '内蒙古开放大学' in self.browser.title:
self.update_running_label('登录成功')
print("登陆成功")
break
else:
self.update_running_label('请在浏览器中登录')
time.sleep(1)
except:
self.update_running_label('请在浏览器中登录')
self.running = False
return
while self.running:
while self.paused:
time.sleep(0.5)
self.update_running_label('打分中...')
try:
self.browser.switch_to.window(self.browser.window_handles[1])
score_box = self.browser.find_element(By.CLASS_NAME, 'score-box')
score_input = score_box.find_element(By.TAG_NAME, 'input')
score_input.clear()
score_input.send_keys(str(random.randint(94, 99)))
time.sleep(1)
submit_button = self.browser.find_element(By.CLASS_NAME, 'nav-text')
submit_button.click()
time.sleep(2)
except Exception as e:
print(e)
continue
else:
if '已到最后' in self.browser.page_source:
self.update_running_label('已到最后,请手动保存后重新开始!')
self.running = False
break
self.browser.switch_to.window(self.browser.window_handles[0])
self.browser.refresh()
def run(self):
self.root.mainloop()
if __name__ == '__main__':
auto_score_100 = AutoScore100()
auto_score_100.run()
注意
- 代码中的
D:\评阅用是 Chrome 用户数据目录,请根据实际情况修改 - 代码中的
内蒙古开放大学是评分系统的登录页面标题,请根据实际情况修改 - 代码中的
score-box和nav-text是评分系统中的元素类名,请根据实际情况修改 - 代码中的
random.randint(94, 99)是分数范围,请根据实际情况修改 - 代码中的
已到最后是评分系统中已经评分完毕的提示语,请根据实际情况修改
声明
本代码仅供参考,请勿用于任何非法用途。
免责声明
本代码仅供学习交流使用,使用者应自行承担使用该代码带来的风险。开发者不对使用该代码造成的任何损失负任何责任。
版权声明
本代码版权归作者所有。
联系方式
如有任何问题,请随时联系我。
更新日志
- 2023-05-25: 初始版本
鸣谢
感谢所有帮助我完成此代码的贡献者。
致谢
感谢您使用我的代码!
其他
- 本代码仅供参考,请勿用于任何非法用途。
- 开发者不对使用该代码造成的任何损失负任何责任。
- 代码中的注释可能存在错误,请自行检查。
- 代码可能存在安全漏洞,请谨慎使用。
祝您使用愉快!
原文地址: https://www.cveoy.top/t/topic/fYYE 著作权归作者所有。请勿转载和采集!