Selenium 自动评分机器人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:
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的元素,如果出现了则不填入分值,并提示“该学生论坛未提交”,然后进行下一个学生。
原文地址: https://www.cveoy.top/t/topic/f2gl 著作权归作者所有。请勿转载和采集!