修改后的代码如下:

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:
            score_text = self.browser.find_element(By.CLASS_NAME, "content").text
            if not score_text:
                # 填写分值
                score = random.randint(94, 99)
                forum_score_input.clear()
                forum_score_input.send_keys(str(score))
                time.sleep(1.5)
                self.update_text_box(f"本次论坛分值为:{score}")
                self.update_running_label('论坛打分中...')
        except:
            # 如果出现了class属性为blank-message的元素,则不填入分值,并提示“该学生论坛未提交”,然后进行下一个学生
            try:
                blank_message = self.browser.find_element(By.CLASS_NAME, "blank-message")
                if blank_message:
                    self.update_text_box("该学生论坛未提交")
                    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:
                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:
    print(e)
    self.update_running_label('论坛打分失败,请重试')
finally:
    self.start_forum_button.config(state='normal')
    self.stop_score_button.config(state='disabled')
    self.pause_button.config(state='disabled')

需要修改的位置为try语句块内部的第二个except语句块。在该语句块内部添加一个try-except语句块,判断是否出现了class属性为blank-message的元素,如果出现了则不填入分值,并提示“该学生论坛未提交”,然后进行下一个学生。

Selenium 自动评分机器人1.2 - 论坛打分功能优化

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

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