Python 自动化论坛打分脚本优化:处理最后一个学生并添加等待机制

该脚本用于自动为论坛帖子进行打分。为了提高脚本的稳定性和效率,需要进行以下优化:

  1. 处理最后一个学生: 当脚本遍历到最后一个学生时,需要判断并处理。
  2. 添加等待机制: 为了确保脚本能够稳定地找到页面元素,需要添加等待机制,避免因为网页加载速度过慢导致脚本报错。

优化后的代码

def forum_score_program(self):
    try:
        # 循环打分论坛分值
        while True:
            if not self.running:
                break

            if self.paused:
                continue

            # 等待论坛打分输入框出现
            while True:
                try:
                    forum_score_input = self.browser.find_element(By.XPATH, '//input[@ng-model="currentEnrollment.forum_score.display_score"]')
                    break
                except:
                    pass
                time.sleep(3)

            # 判断是否已经打过分
            try:
                blank_message = self.browser.find_element(By.CLASS_NAME, "blank-message")
                if blank_message.text == "暂无":
                    # 填写分值
                    score = random.randint(94, 99)
                    forum_score_input.send_keys(str(score))
                    time.sleep(1.5)
                    # 点击保存按钮
                    save_button = self.browser.find_element(By.XPATH, '//button[@ng-click="saveScore(currentEnrollment)"]')
                    save_button.click()
                    time.sleep(2.5)
                    self.update_text_box(f"本次论坛分值为:{score}")
                    self.update_running_label('论坛打分中...')
                else:
                    self.update_text_box("本学生已打过论坛分,跳过")
            except:
                pass

            # 点击下一个学生
            next_student_element = self.browser.find_element(By.XPATH, '//i[@ng-click="goToNextStudent()"]')
            if "disabled" in next_student_element.get_attribute("class"):
                print("已经到最后一个学生")
                self.update_running_label('已到最后,请手动保存后重新开始!')
                break
            else:
                next_student_element.click()
                time.sleep(3)
                self.update_running_label('论坛打分中...')
    except Exception as e:
        self.update_text_box(f"脚本运行出错:{e}")
        self.update_running_label('脚本运行出错,请检查!')

代码修改说明:

  1. 添加等待机制:forum_score_program 函数中,添加了 while True 循环来等待论坛打分输入框出现,防止因为网页加载速度过慢导致脚本报错。
  2. 处理最后一个学生: 当点击“下一个学生”按钮后,脚本会判断按钮是否被禁用。如果被禁用,则说明已经到达最后一个学生,脚本会打印提示信息并结束循环。
  3. 添加异常处理:forum_score_program 函数中添加 try...except 代码块,可以捕获脚本运行过程中出现的异常,避免脚本崩溃,并输出错误信息。

代码说明:

  • self.browser 代表浏览器对象
  • By.XPATH 代表使用 XPath 语法定位元素
  • self.update_text_box 用于更新文本框内容
  • self.update_running_label 用于更新运行状态标签内容

使用说明:

  • 确保浏览器驱动程序已正确安装并配置。
  • 修改代码中元素的 XPath 路径,以适应目标网页的结构。
  • 运行脚本,脚本将自动完成论坛打分操作。

注意事项:

  • 脚本的运行需要一定的网络环境和网页加载时间。
  • 请注意网页的结构和元素的属性可能会有变化,需要根据实际情况调整代码。
  • 本脚本仅供参考,请勿用于任何违反法律或道德的行为。

总结:

通过以上优化,该脚本可以更稳定地执行论坛打分操作,并能有效处理最后一个学生的情况,提高了脚本的实用性和可靠性。

Python 自动化论坛打分脚本优化:处理最后一个学生并添加等待机制

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

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