自动评分工具 - 100 分满分
import random import os import time import tkinter as tk from threading import Thread import queue
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By
class AutoScore100: def init(self): self.running = False self.paused = False self.browser = None self.thread = None self.score_thread = None
self.root = tk.Tk()
self.root.title('自动评分—100')
self.root.geometry('300x300')
self.start_button = tk.Button(self.root, text='开始运行', command=self.start_program)
self.start_button.pack(pady=10)
self.stop_score_button = tk.Button(self.root, text='停止运行', command=self.stop_program)
self.stop_score_button.pack(pady=10)
self.stop_score_button.config(state='disabled')
self.start_score_button = tk.Button(self.root, text='开始打分', command=self.start_score)
self.start_score_button.pack(pady=10)
self.start_score_button.config(state='disabled')
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.update_queue = queue.Queue()
self.root.after(100, self.process_updates)
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.start_score_button.config(state='normal')
self.pause_button.config(state='normal')
self.stop_score_button.config(state='normal')
def start_score(self):
if not self.running:
return
if self.score_thread and self.score_thread.is_alive():
return
self.start_score_button.config(state='disabled')
self.stop_score_button.config(state='normal')
self.update_running_label('打分中...')
self.score_thread = Thread(target=self.score_program)
self.score_thread.start()
def stop_program(self):
self.running = False
self.paused = False
self.start_button.config(state='normal')
self.start_score_button.config(state='disabled')
self.stop_score_button.config(state='disabled')
self.pause_button.config(state='disabled')
self.update_running_label('已停止运行')
def pause_program(self):
if not self.running:
return
if self.paused:
self.paused = False
self.pause_button.config(text='暂停打分')
self.start_score_button.config(state='normal')
else:
self.paused = True
self.pause_button.config(text='继续打分')
self.start_score_button.config(state='disabled')
def update_running_label(self, text):
self.update_queue.put(lambda: self.running_label.config(text=text))
def process_updates(self):
while not self.update_queue.empty():
try:
update = self.update_queue.get_nowait()
update()
except queue.Empty:
pass
self.root.after(100, self.process_updates)
def run_program(self):
os.system(r'start chrome --remote-debugging-port=9527 --user-data-dir='D:\评阅用'')
options = Options()
options.add_experimental_option("debuggerAddress", "127.0.0.1:9527")
while self.running:
while self.paused:
time.sleep(0.5)
self.update_running_label('等待登录...')
try:
if not self.browser:
self.browser = webdriver.Chrome(options=options)
else:
while True:
for handle in self.browser.window_handles:
self.browser.switch_to.window(handle)
if '内蒙古开放大学' in self.browser.title:
self.update_running_label('登录成功')
self.start_score_button.config(state='normal')
break
else:
self.update_running_label('未登录')
time.sleep(1)
continue
break
break
except Exception as e:
print(e)
continue
def score_program(self):
try:
while True:
if not self.running:
break
if self.paused:
continue
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)
if '已到最后' in self.browser.page_source:
self.update_running_label('已到最后,请手动保存后重新开始!')
break
except Exception as e:
print(e)
self.update_running_label('打分失败,请重试')
finally:
self.start_score_button.config(state='normal')
self.stop_score_button.config(state='disabled')
self.pause_button.config(state='disabled')
def run(self):
self.root.mainloop()
if name == 'main': auto_score_100 = AutoScore100() auto_score_100.run()
原文地址: https://www.cveoy.top/t/topic/fY2N 著作权归作者所有。请勿转载和采集!