Selenium 自动化批改脚本:随机减分功能
from selenium.webdriver.chrome.options import Options\nfrom selenium import webdriver\nfrom selenium.webdriver.common.by import By\nimport time\nimport os\nimport random\n\n\ndef get_driver():\n # 检查是否已经打开浏览器\n browser_opened = False\n for handle in webdriver.Chrome().window_handles:\n browser_opened = True\n break\n\n # 创建浏览器实例或在已有浏览器中操作\n if browser_opened:\n options = Options()\n options.debugger_address = "127.0.0.1:9222"\n driver = webdriver.Chrome(options=options)\n else:\n os.system(r'start chrome --remote-debugging-port=9222 --user-data-dir="D:\评阅用"')\n options = Options()\n options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")\n driver = webdriver.Chrome(options=options)\n\n return driver\n\n\ndriver = get_driver()\n\n# 找到有“内蒙古开放大学”字样的标签页\nwhile True:\n for handle in driver.window_handles:\n driver.switch_to.window(handle)\n if "内蒙古开放大学" in driver.title:\n print("登录成功")\n break\n else:\n time.sleep(3)\n continue\n break\n\n# 遍历题目组,查找待批改和题号元素\nelements = driver.find_elements(By.CLASS_NAME, "card-div")\nscore_list = []\nsubject_number_list = []\nfor element in elements:\n # 查找待批改元素\n card_score_element = element.find_element(By.CLASS_NAME, "card-score")\n if "待批改" not in card_score_element.text:\n continue\n # 查找题号元素\n subject_number_element = element.find_element(By.CLASS_NAME, "subject-number")\n subject_number_text = subject_number_element.text\n # 提取题号\n subject_number = ""\n for char in subject_number_text:\n if char.isdigit():\n subject_number += char\n subject_number_list.append(subject_number)\n print("待批改的题目号:", subject_number)\n\n\n # 定位元素并统计数量\n elements = driver.find_elements(By.ID, f"subject-{subject_number}")\n count = len(elements)\n\n # 查找题目分值\n summary_numbers = []\n for element in elements:\n summary_element = element.find_element(By.CLASS_NAME, "summary-sub-title")\n summary_text = summary_element.text\n summary_number = ""\n for char in summary_text:\n if char.isdigit():\n summary_number += char\n summary_numbers.append(int(summary_number))\n print(f"第{subject_number}题的分值为:{summary_number}")\n\n # 将题目分值存入列表\n score_list.extend(summary_numbers)\n\n# 如果只有一个题目,则对这道题的分值减去1-2分\nif len(score_list) == 1:\n score_list[0] -= random.randint(1, 2)\n print(f"第{subject_number_list[0]}题减去{score_list[0]}分,剩余{score_list[0]}分")\nelse:\n # 随机选择2-5个题目减分\n reduce_index_list = random.sample(range(len(score_list)), random.randint(2, 5))\n\n # 对选择的题目减分\n for i in reduce_index_list:\n subject_number = subject_number_list[i]\n reduce_score = random.randint(1, 2)\n score_list[i] -= reduce_score\n print(f"第{subject_number}题减去{reduce_score}分,剩余{score_list[i]}分")
原文地址: https://www.cveoy.top/t/topic/oKwJ 著作权归作者所有。请勿转载和采集!