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


def check_browser():
    # 检查是否已经打开了浏览器
    try:
        options = Options()
        options.add_experimental_option('debuggerAddress', '127.0.0.1:9527')
        browser = webdriver.Chrome(options=options)
        browser.execute_script('return true')
        return True
    except:
        return False


def run_program():
    global running
    running = True
    start_button.config(state='disabled')  # 禁用开始按钮
    stop_button.config(state='normal')  # 启用停止按钮
    status_label.config(text='正在运行...')
    if not check_browser():
        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')
    browser = webdriver.Chrome(options=options)

    while True:
        for handle in browser.window_handles:
            browser.switch_to.window(handle)
            if '内蒙古开放大学' in browser.title:
                break
        else:
            time.sleep(1)
            continue
        break

    while running:
        try:
            score_box = 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 = browser.find_element(By.CLASS_NAME, 'nav-text')
            submit_button.click()
            time.sleep(2)
        except:
            continue
        else:
            if '已到最后' in browser.page_source:
                status_label.config(text='已到最后,请手动保存后重新开始!')
                break
            time.sleep(1)

    status_label.config(text='程序已停止')
    start_button.config(state='normal')  # 启用开始按钮
    stop_button.config(state='disabled')  # 禁用停止按钮

def stop_program():
    global running
    running = False


if __name__ == '__main__':
    running = False

    root = tk.Tk()
    root.title('自动评分—100')
    root.geometry('300x200')

    start_button = tk.Button(root, text='开始运行', command=run_program)
    start_button.pack(pady=10)

    stop_button = tk.Button(root, text='停止运行', command=stop_program, state='disabled')
    stop_button.pack(pady=10)

    status_label = tk.Label(root, text='说明:第一次启动会比较慢,浏览器可以最小化')
    status_label.pack(pady=10)

    root.mainloop()

使用方法:

  1. 安装必要的库:

    pip install selenium
    
  2. 下载 ChromeDriver:

  3. 修改代码:

    • 将代码中的 'D:\\评阅用' 替换为您 Chrome 浏览器的用户数据目录路径。
    • 根据评分页面的实际情况,修改 score-boxnav-text 类名。
  4. 运行代码:

    • 保存代码为 .py 文件。
    • 在终端中运行该文件。
  5. 开始评分:

    • 点击“开始运行”按钮。
    • 脚本将自动打开 Chrome 浏览器,并模拟人工操作进行评分。
  6. 停止评分:

    • 点击“停止运行”按钮。

注意事项:

  • 请确保您的 Chrome 浏览器版本与 ChromeDriver 版本一致。
  • 运行脚本前,请先登录内蒙古开放大学教学系统,并打开评分页面。
  • 脚本运行过程中,请勿关闭浏览器或切换页面。
  • 使用自动评分脚本时,请遵守学校的相关规定。

免责声明:

本脚本仅供学习和研究使用,请勿用于非法用途。作者不对使用该脚本造成的任何后果负责。

Python Selenium自动评分脚本:提高教学系统评阅效率

原文地址: https://www.cveoy.top/t/topic/fYG6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录