自动评分工具:高效完成评阅任务
自动评分工具:高效完成评阅任务
本工具使用 Selenium 和 Tkinter 开发,能够自动在浏览器中完成评分任务,并支持暂停和恢复功能,有效提高评阅效率。
核心功能
- 自动评分: 自动在浏览器中找到评分框,并输入随机分数 (94-99)。
- 暂停和恢复: 可以随时暂停评分过程,并在需要时继续运行。
- 登录检测: 程序会检查是否已登录,并提示用户在浏览器中登录。
使用说明
- 启动程序: 运行 Python 代码,程序会弹出一个简单的界面。
- 登录: 在浏览器中登录评阅平台,确保当前页面包含 ID 为 'userCurrentName' 的元素。
- 开始评分: 点击“开始运行”按钮,程序会自动开始评分。
- 暂停和恢复: 点击“暂停运行”按钮暂停评分,点击“继续运行”按钮恢复评分。
代码示例
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
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
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:9527')
try:
self.browser = webdriver.Chrome(options=options)
except:
os.system(r'start chrome --remote-debugging-port=9527 --user-data-dir="D:\评阅用"')
time.sleep(5)
self.browser = webdriver.Chrome(options=options)
# 在所有打开的标签页中查找登录元素
while True:
for handle in self.browser.window_handles:
self.browser.switch_to.window(handle)
try:
if self.browser.find_element(By.ID, 'userCurrentName'):
self.update_running_label('登录成功')
break
else:
self.update_running_label('请在浏览器中登录')
time.sleep(1)
except:
self.update_running_label('请在浏览器中登录')
self.running = False
return
else:
# 如果没有找到登录元素,则退出循环
self.update_running_label('请在浏览器中登录')
self.running = False
return
if self.running:
break
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
def run(self):
self.root.mainloop()
if __name__ == '__main__':
auto_score_100 = AutoScore100()
auto_score_100.run()
注意事项
- 请确保浏览器已开启远程调试功能,并设置好调试端口 (默认 9527)。
- 程序会根据页面元素的 ID 和 Class Name 进行操作,如果评阅平台的页面结构发生变化,需要修改代码才能正常运行。
- 使用此工具前请仔细阅读相关平台的规则,避免违反相关规定。
本工具仅供参考,请谨慎使用。
原文地址: https://www.cveoy.top/t/topic/oDg0 著作权归作者所有。请勿转载和采集!