自动评分工具—100:使用 Selenium 实现高效自动化评分
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 selenium.webdriver.common.keys import Keys 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('300x300')
self.start_button = tk.Button(self.root, text='开始运行', command=self.start_program)
self.start_button.pack(pady=10)
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.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.start_score_button.config(state='normal')
self.pause_button.config(state='normal')
def start_score(self):
if not self.running:
return
self.update_running_label('打分中...')
try:
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)
self.update_running_label('打分失败,请重试')
else:
if '已到最后' in self.browser.page_source:
self.update_running_label('已到最后,请手动保存后重新开始!')
self.running = False
self.start_button.config(state='normal')
self.start_score_button.config(state='disabled')
self.pause_button.config(state='disabled')
self.resume_button.config(state='disabled')
else:
self.update_running_label('打分完成')
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')
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:
handles = self.browser.window_handles
for handle in 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 run(self):
self.root.mainloop()
if name == 'main': auto_score_100 = AutoScore100() auto_score_100.run()
原文地址: http://www.cveoy.top/t/topic/fYZm 著作权归作者所有。请勿转载和采集!