论坛系统测试报告
为“论坛系统”项目设计测试用例,并实施手工测试与自动化测试。自动化测试是通过Selenium编写的自动化脚本,覆盖了用户登录、用户注册等核心功能模块,确保该项目各个模块功能的稳定,使用户有流畅的论坛浏览和使用体验。测试策略:对论坛进行,功能测试,界面测试,易用性测试,兼容性测试等,并使用selenium编写自动化测试脚本进行自动化测试。出现修改成功弹窗,修改成功出现警告弹窗,修改失败本次测试对项目
一、项目介绍
为“论坛系统”项目设计测试用例,并实施手工测试与自动化测试。
自动化测试是通过Selenium编写的自动化脚本,覆盖了用户登录、用户注册等核心功能模块,确保该项目各个模块功能的稳定,使用户有流畅的论坛浏览和使用体验。
测试策略:对论坛进行,功能测试,界面测试,易用性测试,兼容性测试等,并使用selenium编写自动化测试脚本进行自动化测试。
二、设计测试用例
使用XMind编写,包括功能测试,界面测试,安全测试,易用性测试,兼容性测试:

三. 测试环境
系统:Windows11
浏览器:Microsoft Edge 版本 135.0.3179.98 (正式版本) (64 位) ;Firefox 版本 127.0 (64 位)
测试工具:Selenium4.0.0
四、根据测试用例进行手动测试
4.1 注册界面
4.1.1 朴素页面

4.1.2 各输入框是否可以输入,可勾选项是否可以勾选,隐私信息是否掩码显示

各输入框可以输入,可勾选项可以勾选,隐私信息掩码显示
4.1.3 “眼睛”明文显示按钮是否可用,注册按钮是否可用

“眼睛”明文显示按钮是否可用,点击注册按钮式页面跳转至登录页面,可用。
4.1.4 “我已有一个用户?登录”,链接是否可以点击跳转
链接点击后页面跳转至登录页面,可用。
4.1.5 异常注册
4.1.5.1 输入用户名&昵称&密码&确认密码&不勾选使用条款和隐私政策选项

使用条款和隐私政策选项有红框提醒
4.1.5.2 输入用户名&昵称&勾选使用条款和隐私政策选项,不输入密码&确认密码

未输入的输入框有红字提醒
4.1.5.3 不输入用户名&昵称&密码&确认密码&勾选使用条款和隐私政策选项

未输入的输入框有红字提醒
4.1.5.4 输入密码&确认密码&勾选使用条款和隐私政策选项,不输用户名&昵称

未输入的输入框有红字提醒
4.1.5.5 输入用户名&密码&确认密码&不勾选使用条款和隐私政策选项,不输入昵称

未输入的输入框有红字提醒,使用条款和隐私政策选项有红框提醒
4.1.5.6 已经注册的用户再注册

无法注册成功,有提示弹窗
4.1.6 正常注册


注册成功调整登录界面,可以正常登录
4.2 登录界面
4.2.1 各输入框是否可以输入,隐私输入是否掩码显示

各输入框可以输入,隐私输入掩码显示
4.2.2 “眼睛”显示填入信息按钮是否可以点击显示信息

“眼睛”显示填入信息按钮可以点击显示信息
4.2.3 注册选项是否可以点击跳转
点击后页面跳转至登录注册页面,可以跳转
4.2.4 登录按钮是否可以使用
输入正确用户名已经密码后,页面跳转至论坛首页,登录按钮可以使用
4.2.5 异常登录
4.2.5.1 正确的用户名&错误的密码

有弹窗提示
4.2.5.2 错误的用户名&正确的密码

有弹窗提示
4.2.5.3 错误的用户名&错误的密码

有弹窗提示
4.2.6 正常登录
输入正确用户名已经密码后,页面跳转至论坛首页,登录按钮可以使用
4.3 论坛首页
4.3.1 朴素页面

4.3.2 博客分类标签是否可以点击切换


博客分类标签可以点击切换
4.3.3 夜间模式、日间模式是否可以点击切换


夜间模式、日间模式可以点击切换
4.3.4 用户个人详情是否可以点击出现弹窗

用户个人详情可以点击出现弹窗
4.3.5 站内信息提醒是否可以点击出现弹窗

站内信息提醒可以点击出现弹窗
4.3.6 “+发布帖子”是否可以点击跳转

”+发布帖子“可以点击跳转
4.3.7 博客名是否可以点击跳转

博客名可以点击跳转
4.3.8 搜索框是否可以输入跳转


输入框输入搜索信息,没有进行特定输入,并且跳转回论坛首页
4.3.9 用户个人详情弹窗
4.3.9.1 “我的帖子”是否可以点击跳转


“我的帖子”可以点击跳转
4.3.9.2 “个人中心”是否可以点击跳转


“个人中心”可以点击跳转
4.3.9.3 “退出”是否可以点击退出网页


“退出”可以点击退出网页
4.3.10 站内信息提醒弹窗
4.3.10.1 关闭按钮是否可以点击关闭弹窗


关闭按钮可以点击关闭弹窗
4.3.10.2 对于收到信息点击是否出现回复弹窗

对于收到信息点击出现回复弹窗
4.3.10.2.1 点击弹窗取消按钮是否可以关闭弹窗


点击弹窗取消按钮可以关闭弹窗
4.3.10.2.2 点击弹窗回复按钮是否出现回复输入框


点击弹窗回复按钮出现回复输入框
4.3.10.2.3 回复输入框输入回复字段点击发送按钮


出现发送成功弹窗
4.3.10.2.3 回复输入框不输入回复字段点击发送按钮


出现输入提醒弹窗
4.4 博客详情页
4.4.1 朴素页面
4.4.2 “发私信”是否可以点击出现弹窗


“发私信”可以点击出现弹窗
4.4.3 回复编辑组件是否可以正常使用&回复按钮是否可以正常使用


回复编辑组件可以进行输入,回复按钮可以正常使用
4.4.4 回复编辑组件空输入


出现输入提示弹窗
4.4.5 ”点赞“是否可以点击进行点赞

“点赞”可以点击进行点赞
4.4.5 ”发私信“弹窗
4.4.5.1 关闭按钮是否可以点击关闭弹窗


关闭按钮可以点击关闭弹窗
4.4.5.2 “取消”是否可以点击关闭弹窗


“取消”可以点击关闭弹窗
4.4.5.3 弹窗输入框是否可以输入&“发送”是否可以点击发送


弹窗输入框可以输入&“发送”可以点击发送
4.4.5.4 弹窗输入框空输入


出现输入警告弹窗
4.5 帖子编辑界面
4.5.1 朴素页面

4.5.2 板块选项框是否可以选择


板块选项框可以选择
4.5.3 标题选项框是否可以输入

标题选项框可以输入
4.5.4 内容编辑组件是否正常使用


内容编辑组正常使用
4.5.5 正常编发贴(有选项&有标题&编辑内容)



发贴成功
4.5.6 异常编发贴
4.5.6 有标题&无编辑内容


出现输入提示弹窗
4.5.7 无标题&无编辑内容


出现提示弹窗
4.5.8 无标题&有编辑内容


出现帖子标题输入提示弹窗
4.6 用户中心界面
4.6.1 朴素页面

4.6.2 各输入框是否可以输入,“眼睛”显示填入信息按钮是否可以点击显示信息


各输入框可以输入,私密信息掩码显示,“眼睛”显示填入信息按钮点击无响应
4.6.3 各“修改“按钮是否可以点击,“提交修改”是否可以点击提交






各“修改“按钮点击出现修改成功弹窗,说明“修改“按钮可以点击;“提交修改”点击提交后页面跳转至登录界面,用新密码登录进入论坛首页,说明“提交修改”成功
4.6.4 昵称输入框
4.6.4.1 不输入字符进行修改

让用户进行输入
4.6.4.2 输入字符进行修改

出现修改成功弹窗,修改成功
4.6.4.3 清除已有字符进行修改

让用户进行输入
4.6.5 邮箱输入框
4.6.5.1 不输入邮箱进行修改

让用户进行输入
4.6.5.2 输入邮箱进行修改

出现修改成功弹窗,修改成功
4.6.5.3 清除已有邮箱进行修改

让用户进行输入
4.6.5.4 输入正确的邮箱进行修改

出现修改成功弹窗,修改成功
4.6.5.5 输入错误的邮箱进行修改

出现修改成功弹窗,修改成功
4.6.6 电话号码输入框
4.6.6.1 不输入电话号码进行修改

让用户进行输入
4.6.6.2 输入电话号码进行修改

出现修改成功弹窗,修改成功
4.6.6.3 清除已有电话号码进行修改

让用户进行输入
4.6.6.4 输入正确的电话号码

出现修改成功弹窗,修改成功
4.6.6.5 输入错误的电话号码

出现修改成功弹窗,修改成功
4.6.7 个人简介输入框
4.6.7.1 填写后修改

出现修改成功弹窗,修改成功
4.6.7.2 不填写后修改

让用户进行输入
4.6.7.3 填写原来的个人简介后修改

出现警告弹窗,修改失败
4.6.8 修改密码部分
4.6.8.1 正常修改密码



正常输入后,点击提交修改,页面跳转登录页面,输入修改后的密码进行登录,可以进入论坛首页,输入老密码不允许登录
4.6.8.2 异常修改密码
4.6.8.2.1 错填原密码

出现警告弹窗,提交修改失败
4.6.8.2.2 错填确认密码

出现警告弹窗,提交修改失败
4.6.8.2.3 原密码与新原密码相同


提交修改成功,用原密码可以登录
4.6.8.2.4 不填原密码

让用户输入原密码
4.6.8.2.5 不填确认密码

让用户输入确认密码
五、通过Selenium编写的自动化脚本
5.1 创建驱动类
import datetime
import os.path
import sys
from selenium import webdriver
from selenium.webdriver.edge.service import Service
from webdriver_manager.microsoft import EdgeChromiumDriverManager
class Driver:
driver = ""
def __init__(self):
options = webdriver.EdgeOptions()
self.driver = webdriver.Edge(service=Service(EdgeChromiumDriverManager().install()),options=options)
#隐式等待
self.driver.implicitly_wait(3)
def getScreeShot(self):
#创建存放屏幕截图的文件夹以及字文件夹
dirname = datetime.datetime.now().strftime("%Y-%m-%d")
#判断images文件夹下是否创建dirname文件夹,不存在则创建
if not os.path.exists("../images/"+dirname):
os.mkdir("../images/"+dirname)
#创建屏幕截图
filename =sys._getframe().f_back.f_code.co_name + "-" + datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S") + ".png"
self.driver.save_screenshot("../images/"+dirname+"/"+filename)
BlogDriver = Driver()
基于Firefox进行自动化测试,只需要改为
self.driver = webdriver.Edge(service=Service(GeckoDriverManager().install()),options=options)
5.2 创建注册页测试类
import datetime
import time
from selenium.webdriver.common.by import By
from common.Utils import BlogDriver
class BlogRegTest:
url = ""
driver = ""
def __init__(self):
self.url = "http://127.0.0.1:9580/sign-up.html"
self.driver = BlogDriver.driver
self.driver.get(self.url)
#元素检测
def RegEleTest(self):
#我已有一个用户?登录,链接是否可以点击跳转
self.driver.find_element(By.CSS_SELECTOR, "body > div > div > div.text-center.text-muted.mt-3 > a").click()
BlogDriver.getScreeShot()
self.driver.back()
#用户名&昵称&密码&确认密码是否可以输入
self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("123")
self.driver.find_element(By.CSS_SELECTOR,"#nickname").send_keys("123")
self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("123")
self.driver.find_element(By.CSS_SELECTOR,"#passwordRepeat").send_keys("123")
BlogDriver.getScreeShot()
#“眼睛”显示填入信息按钮是否可以点击显示信息
self.driver.find_element(By.CSS_SELECTOR,"#password_a > svg").click()
self.driver.find_element(By.CSS_SELECTOR,"#passwordRepeat_a > svg").click()
#使用条款和隐私政策是否可以勾选
self.driver.find_element(By.CSS_SELECTOR,"#policy").click()
#注册按钮是否可以点击
self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
BlogDriver.getScreeShot()
self.driver.refresh()
#错误注册
def RegFailTest(self):
testDay = datetime.datetime.now().strftime("%H%M%S")
#输入用户名&昵称&密码&确认密码&不勾选使用条款和隐私政策选项
self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("123331"+testDay)
self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("123331"+testDay)
self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123331"+testDay)
self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").send_keys("123"+testDay)
self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
BlogDriver.getScreeShot()
self.driver.refresh()
#输入密码&确认密码&勾选使用条款和隐私政策选项,不输用户名&昵称
self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123331" + testDay)
self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").send_keys("123" + testDay)
self.driver.find_element(By.CSS_SELECTOR,"#policy").click()
self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
Username = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(2) > div").text
assert Username == "用户名不能为空"
Nickname = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(3) > div").text
assert Nickname == "昵称不能为空"
BlogDriver.getScreeShot()
self.driver.refresh()
#输入用户名&昵称&勾选使用条款和隐私政策选项,不输入密码&确认密码
self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("123331" + testDay)
self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("123331" + testDay)
self.driver.find_element(By.CSS_SELECTOR,"#policy").click()
self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
Password = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(4) > div > div").text
assert Password == "密码不能为空"
passwordRepeat = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(5) > div > div").text
assert passwordRepeat == "请检查确认密码"
BlogDriver.getScreeShot()
self.driver.refresh()
#不输入用户名&昵称&密码&确认密码&勾选使用条款和隐私政策选项
self.driver.find_element(By.CSS_SELECTOR, "#policy").click()
self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
Username = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(2) > div").text
assert Username == "用户名不能为空"
Nickname = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(3) > div").text
assert Nickname == "昵称不能为空"
Password = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(4) > div > div").text
assert Password == "密码不能为空"
passwordRepeat = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(5) > div > div").text
assert passwordRepeat == "请检查确认密码"
BlogDriver.getScreeShot()
self.driver.refresh()
#输入用户名&密码&确认密码&不勾选使用条款和隐私政策选项,不输入昵称
self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("123331" + testDay)
self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123331" + testDay)
self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").send_keys("123" + testDay)
self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
Nickname = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(3) > div").text
assert Nickname == "昵称不能为空"
BlogDriver.getScreeShot()
self.driver.refresh()
#正确注册
def RegSucTest(self):
#输入用户名&昵称&密码&确认密码&勾选使用条款和隐私政策选项
testDay = datetime.datetime.now().strftime("%H%M%S")
self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("28905"+testDay)
self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("test"+testDay)
self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").send_keys("123456")
self.driver.find_element(By.CSS_SELECTOR,"#policy").click()
self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("28905"+testDay)
self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
self.driver.find_element(By.CSS_SELECTOR,"#index_nav_avatar")
BlogDriver.getScreeShot()
self.driver.back()
5.3 创建登录页测试类
import time
from selenium.webdriver.common.by import By
from common.Utils import BlogDriver
class BlogLoginTest:
url = ""
driver = ""
def __init__(self):
self.url = "http://127.0.0.1:9580/sign-in.html"
self.driver = BlogDriver.driver
self.driver.get(self.url)
#元素检测
def LoginEleTest(self):
#用户名&密码输入框是否可以输入
self.driver.find_element(By.CSS_SELECTOR, "#username").clear()
self.driver.find_element(By.CSS_SELECTOR, "#password").clear()
self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("123")
self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")
#“眼睛”显示填入信息按钮是否可以点击显示信息
self.driver.find_element(By.CSS_SELECTOR,"#password_a > svg").click()
BlogDriver.getScreeShot()
#登录按钮是否可以点击
self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
BlogDriver.getScreeShot()
self.driver.refresh()
#注册选项是否可以点击跳转
self.driver.find_element(By.CSS_SELECTOR,"body > div.page.page-center > div > div > div:nth-child(1) > div > div.text-center.text-muted.mt-3 > a").click()
self.driver.find_element(By.CSS_SELECTOR,"#submit")
BlogDriver.getScreeShot()
self.driver.back()
# 异常登录
def LoginFailTest(self):
# 正确用户名&错误密码
self.driver.find_element(By.CSS_SELECTOR, "#username").clear()
self.driver.find_element(By.CSS_SELECTOR, "#password").clear()
self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("2890556976")
self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123000")
self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
BlogDriver.getScreeShot()
self.driver.refresh()
# 错误用户名&正确密码
self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("2890557669")
self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123321")
self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
BlogDriver.getScreeShot()
self.driver.refresh()
# 错误用户名&错误密码
self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("2890557669")
self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123111")
self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
BlogDriver.getScreeShot()
self.driver.refresh()
#正常登录
def LoginSucTest(self):
self.driver.find_element(By.CSS_SELECTOR, "#username").clear()
self.driver.find_element(By.CSS_SELECTOR, "#password").clear()
self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("2890556976")
self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("123321")
self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
#找到则登录成功
self.driver.find_element(By.CSS_SELECTOR,"#index_nav_avatar")
BlogDriver.getScreeShot()
4.4 创建论坛首页测试类
import time
from selenium.webdriver.common.by import By
from common.Utils import BlogDriver
class BlogListTest:
url = ""
driver = ""
def __init__(self):
self.url = "http://127.0.0.1:9580/index.html"
self.driver = BlogDriver.driver
self.driver.get(self.url)
#元素检测
def ListEleTest(self):
#博客分类标签是否可以点击切换
self.driver.find_element(By.CSS_SELECTOR,"#topBoardList > li:nth-child(2) > a > span.nav-link-title").click()
self.driver.find_element(By.CSS_SELECTOR,"#article_list_board_title")
BlogDriver.getScreeShot()
self.driver.find_element(By.CSS_SELECTOR, "#topBoardList > li.nav-item.active > a > span.nav-link-title").click()
self.driver.find_element(By.CSS_SELECTOR, "#article_list_board_title")
BlogDriver.getScreeShot()
#”+发布帖子“是否可以点击跳转
self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-header.d-print-none > div > div > div.col-auto.ms-auto.d-print-none > div > a.btn.btn-primary.d-none.d-sm-inline-block.article_post").click()
self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-header.d-print-none > div > div > div > h2")
BlogDriver.getScreeShot()
self.driver.back()
#博客名是否可以点击跳转
self.driver.find_element(By.CSS_SELECTOR,"#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
self.driver.find_element(By.CSS_SELECTOR,"#details_article_title")
BlogDriver.getScreeShot()
self.driver.back()
#搜索框是否可以输入跳转
self.driver.find_element(By.CSS_SELECTOR,"body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > div > div.nav-item.d-none.d-md-flex.me-3 > div > form > div > input").send_keys("测试")
BlogDriver.getScreeShot()
self.driver.back()
#夜间模式、日间模式是否可以点击切换
self.driver.find_element(By.CSS_SELECTOR,"body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > div > div:nth-child(2) > a.nav-link.px-0.hide-theme-dark > svg > path:nth-child(2)").click()
self.driver.find_element(By.CSS_SELECTOR,"body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > div > div:nth-child(2) > a.nav-link.px-0.hide-theme-light > svg > path:nth-child(2)").click()
BlogDriver.getScreeShot()
#用户个人详情是否可以点击出现弹窗
self.driver.find_element(By.CSS_SELECTOR,"#index_nav_avatar").click()
self.driver.find_element(By.CSS_SELECTOR,"#index_user_profile")
BlogDriver.getScreeShot()
#站内信息提醒是否可以点击出现弹窗
self.driver.find_element(By.CSS_SELECTOR,"body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > div > div:nth-child(2) > div > a > svg").click()
self.driver.find_element(By.CSS_SELECTOR,"#offcanvasEndLabel")
BlogDriver.getScreeShot()
self.driver.find_element(By.CSS_SELECTOR,"#index_message_offcanvasEnd > div.offcanvas-header > button").click()
#站内信息提醒弹窗
def ListInforRemPopupWindowTest(self):
#对于收到信息点击是否出现回复弹窗
self.driver.find_element(By.CSS_SELECTOR,"#index_div_message_list > div:nth-child(1) > div > div.col.text-truncate > a").click()
self.driver.find_element(By.CSS_SELECTOR,"#index_message_detail_title")
BlogDriver.getScreeShot()
#点击弹窗回复按钮是否出现回复输入框
self.driver.find_element(By.CSS_SELECTOR,"#btn_index_message_reply").click()
self.driver.find_element(By.CSS_SELECTOR,"#index_message_reply_receive_user_name")
#点击弹窗取消按钮是否可以关闭弹窗
self.driver.find_element(By.CSS_SELECTOR, "#index_message_reply_cancel").click()
self.driver.find_element(By.CSS_SELECTOR,"#offcanvasEndLabel")
#不输入回复字段直接点击发送按钮
self.driver.find_element(By.CSS_SELECTOR,"#index_div_message_list > div:nth-child(1) > div > div.col.text-truncate > a").click()
self.driver.find_element(By.CSS_SELECTOR,"#btn_index_message_reply").click()
self.driver.find_element(By.CSS_SELECTOR,"#btn_index_send_message_reply").click()
BlogDriver.getScreeShot()
#输入回复字段点击发送按钮
self.driver.find_element(By.CSS_SELECTOR,"#index_div_message_list > div:nth-child(1) > div > div.col.text-truncate > a").click()
self.driver.find_element(By.CSS_SELECTOR,"#btn_index_message_reply").click()
self.driver.find_element(By.CSS_SELECTOR,"#index_message_reply_receive_content").send_keys("haha")
self.driver.find_element(By.CSS_SELECTOR,"#btn_index_send_message_reply").click()
BlogDriver.getScreeShot()
self.driver.find_element(By.CSS_SELECTOR,"#index_message_offcanvasEnd > div.offcanvas-header > button").click()
#用户个人详情弹窗
def ListPersonalDetailsPopupWindowTest(self):
#“我的帖子”是否可以点击跳转
self.driver.find_element(By.CSS_SELECTOR,"#index_nav_avatar").click()
self.driver.find_element(By.CSS_SELECTOR,"#index_user_profile").click()
self.driver.find_element(By.CSS_SELECTOR,"#profile_nickname")
BlogDriver.getScreeShot()
self.driver.back()
#“个人中心”是否可以点击跳转
self.driver.find_element(By.CSS_SELECTOR,"#index_nav_avatar").click()
self.driver.find_element(By.CSS_SELECTOR,"#index_user_settings").click()
self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-header.d-print-none > div > div > div > h2")
BlogDriver.getScreeShot()
self.driver.back()
#“退出”是否可以点击退出网页
self.driver.find_element(By.CSS_SELECTOR,"#index_nav_avatar").click()
self.driver.find_element(By.CSS_SELECTOR,"#index_user_logout").click()
self.driver.find_element(By.CSS_SELECTOR,"body > div > div > div > div:nth-child(1) > div > div.card.card-md > div > h2")
BlogDriver.getScreeShot()
#重新进入登录状态
self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("2890556976")
self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("123321")
self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
5.5 创建博客详情页测试类
from selenium.webdriver.common.by import By
from common.Utils import BlogDriver
class BlogDetailsTest:
url = ""
driver = ""
def __init__(self):
self.url = "http://127.0.0.1:9580/index.html"
self.driver = BlogDriver.driver
self.driver.get(self.url)
def DetailsEleTest(self):
self.driver.find_element(By.CSS_SELECTOR,"#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
#“发私信”是否可以点击出现弹窗
self.driver.find_element(By.CSS_SELECTOR,"#btn_details_send_message").click()
self.driver.find_element(By.CSS_SELECTOR,"#index_message_modal > div > div > div.modal-header > h5")
BlogDriver.getScreeShot()
self.driver.find_element(By.CSS_SELECTOR,"#index_message_modal > div > div > div.modal-header > button").click()
#回复编辑组件是否可以正常使用
self.driver.find_element(By.CSS_SELECTOR,"#article_details_reply > div.editormd-toolbar > div > ul > li:nth-child(7) > a > i").click()
self.driver.find_element(By.CSS_SELECTOR,"#details_btn_article_reply").click()
BlogDriver.getScreeShot()
#”点赞“是否可以点击进行点赞
self.driver.find_element(By.CSS_SELECTOR,"#details_btn_like_count").click()
BlogDriver.getScreeShot()
def SendMessagePopupWindowTest(self):
#输入消息是否可以发送
self.driver.find_element(By.CSS_SELECTOR,"#btn_details_send_message").click()
self.driver.find_element(By.CSS_SELECTOR,"#index_message_receive_content").send_keys("haha")
self.driver.find_element(By.CSS_SELECTOR,"#btn_index_send_message").click()
BlogDriver.getScreeShot()
#不输入消息是否可以发送
self.driver.find_element(By.CSS_SELECTOR,"#btn_details_send_message").click()
self.driver.find_element(By.CSS_SELECTOR,"#btn_index_send_message").click()
BlogDriver.getScreeShot()
#“取消”是否可以点击关闭弹窗
self.driver.find_element(By.CSS_SELECTOR,"#btn_details_send_message").click()
self.driver.find_element(By.CSS_SELECTOR,"#index_message_receive_cancel").click()
self.driver.find_element(By.CSS_SELECTOR,"#details_article_title")
BlogDriver.getScreeShot()
#关闭按钮是否可以点击关闭弹窗
self.driver.find_element(By.CSS_SELECTOR,"#btn_details_send_message").click()
self.driver.find_element(By.CSS_SELECTOR,"#index_message_modal > div > div > div.modal-header > button").click()
self.driver.find_element(By.CSS_SELECTOR,"#details_article_title")
BlogDriver.getScreeShot()
5.6 创建帖子编辑页测试类
from selenium.webdriver.common.by import By
from common.Utils import BlogDriver
class BlogPostEditingTest:
url = ""
driver = ""
def __init__(self):
self.url = "http://127.0.0.1:9580/index.html"
self.driver = BlogDriver.driver
self.driver.get(self.url)
def PostEditingEleTest(self):
#板块选项框是否可以选择
self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-header.d-print-none > div > div > div.col-auto.ms-auto.d-print-none > div > a.btn.btn-primary.d-none.d-sm-inline-block.article_post").click()
self.driver.find_element(By.CSS_SELECTOR,"#article_post_borad").click()
self.driver.find_element(By.CSS_SELECTOR,"#article_post_borad > option:nth-child(2)").click()
BlogDriver.getScreeShot()
#标题选项框是否可以输入
self.driver.find_element(By.CSS_SELECTOR,"#article_post_title").send_keys("haha")
BlogDriver.getScreeShot()
#内容编辑组件是否正常使用
self.driver.find_element(By.CSS_SELECTOR,"#edit-article > div.editormd-toolbar > div > ul > li:nth-child(7) > a > i").click()
self.driver.find_element(By.CSS_SELECTOR,"#article_post_submit").click()
BlogDriver.getScreeShot()
def PostEditingSucSendTest(self):
#有选项 & 有标题 & 编辑内容
self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-header.d-print-none > div > div > div.col-auto.ms-auto.d-print-none > div > a.btn.btn-primary.d-none.d-sm-inline-block.article_post").click()
self.driver.find_element(By.CSS_SELECTOR,"#article_post_borad").click()
self.driver.find_element(By.CSS_SELECTOR,"#article_post_borad > option:nth-child(2)").click()
self.driver.find_element(By.CSS_SELECTOR,"#article_post_title").send_keys("测试")
self.driver.find_element(By.CSS_SELECTOR,"#edit-article > div.editormd-toolbar > div > ul > li:nth-child(7) > a > i").click()
self.driver.find_element(By.CSS_SELECTOR,"#article_post_submit").click()
BlogDriver.getScreeShot()
def PostEditingFailSendTest(self):
#有标题 & 无编辑内容
self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-header.d-print-none > div > div > div.col-auto.ms-auto.d-print-none > div > a.btn.btn-primary.d-none.d-sm-inline-block.article_post").click()
self.driver.find_element(By.CSS_SELECTOR, "#article_post_title").send_keys("测试")
self.driver.find_element(By.CSS_SELECTOR, "#article_post_submit").click()
BlogDriver.getScreeShot()
#无标题&编辑内容
self.driver.find_element(By.CSS_SELECTOR, "#article_post_title").clear()
self.driver.find_element(By.CSS_SELECTOR,"#edit-article > div.editormd-toolbar > div > ul > li:nth-child(7) > a > i").click()
self.driver.find_element(By.CSS_SELECTOR, "#article_post_submit").click()
BlogDriver.getScreeShot()
#无标题&无编辑内容
self.driver.find_element(By.CSS_SELECTOR, "#article_post_submit").click()
BlogDriver.getScreeShot()
5.7 创建用户中心页测试类
import datetime
from selenium.webdriver.common.by import By
from common.Utils import BlogDriver
class BlogUserTest:
url = ""
driver = ""
def __init__(self):
self.url = "http://127.0.0.1:9580/index.html"
self.driver = BlogDriver.driver
self.driver.get(self.url)
def UserEleTest(self):
#头像框是否可以点击选择头像
self.driver.find_element(By.CSS_SELECTOR,"#settings_avatar").send_keys("C:\Users\洋洋洋洋\Desktop\测试开发\BlogAutoTest\Avatar\img.png")
BlogDriver.getScreeShot()
#“修改头像”是否可以点击修改头像
self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-body > div > div > div > div.col.d-flex.flex-column > div > div.row.align-items-center > div:nth-child(2) > a").send_keys("C:\Users\洋洋洋洋\Desktop\测试开发\BlogAutoTest\Avatar\img_1.png")
BlogDriver.getScreeShot()
#昵称输入框是否可以输入
self.driver.find_element(By.CSS_SELECTOR,"#setting_input_nickname").clear()
self.driver.find_element(By.CSS_SELECTOR,"#setting_input_nickname").send_keys("test")
#邮箱地址输入框是否可以输入
self.driver.find_element(By.CSS_SELECTOR,"#setting_input_email").clear()
self.driver.find_element(By.CSS_SELECTOR,"#setting_input_email").send_keys("2890556977")
#电话号码输入框是否可以输入
self.driver.find_element(By.CSS_SELECTOR,"#setting_input_phoneNum").clear()
self.driver.find_element(By.CSS_SELECTOR,"#setting_input_phoneNum").send_keys("17877354321")
# 个人简介输入框是否可以输入
self.driver.find_element(By.CSS_SELECTOR, "#settings_textarea_remark").clear()
self.driver.find_element(By.CSS_SELECTOR, "#settings_textarea_remark").send_keys("这个人很懒什么都没有输入")
# 各“修改"按钮是否可以点击
self.driver.find_element(By.CSS_SELECTOR, "#setting_submit_nickname").click()
BlogDriver.getScreeShot()
self.driver.find_element(By.CSS_SELECTOR, "#setting_submit_email").click()
BlogDriver.getScreeShot()
self.driver.find_element(By.CSS_SELECTOR, "#setting_submit_phoneNum").click()
BlogDriver.getScreeShot()
self.driver.find_element(By.CSS_SELECTOR, "")
BlogDriver.getScreeShot()
#原密码输入框是否可以输入
self.driver.find_element(By.CSS_SELECTOR,"#settings_input_oldPassword").clear()
self.driver.find_element(By.CSS_SELECTOR,"#settings_input_oldPassword").send_keys("123333")
#新原密码输入框是否可以输入
self.driver.find_element(By.CSS_SELECTOR,"#settings_input_newPassword").clear()
self.driver.find_element(By.CSS_SELECTOR,"#settings_input_oldPassword").send_keys("123000")
#确认密码输入框是否可以输入
self.driver.find_element(By.CSS_SELECTOR,"#settings_input_passwordRepeat").clear()
self.driver.find_element(By.CSS_SELECTOR,"#settings_input_passwordRepeat").send_keys("123222")
BlogDriver.getScreeShot()
# “眼睛”显示填入信息按钮是否可以点击显示信息
self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-body > div > div > div > div.col.d-flex.flex-column > div > div:nth-child(14) > div > div > form > div:nth-child(1) > div > span > a > svg").click()
self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-body > div > div > div > div.col.d-flex.flex-column > div > div:nth-child(14) > div > div > form > div:nth-child(2) > div > span > a > svg").click()
self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-body > div > div > div > div.col.d-flex.flex-column > div > div:nth-child(14) > div > div > form > div:nth-child(3) > div > span > a > svg").click()
BlogDriver.getScreeShot()
#“提交修改”是否可以点击提交
self.driver.find_element(By.CSS_SELECTOR,"#settings_submit_password").click()
BlogDriver.getScreeShot()
self.driver.refresh()
def UserNicknameTest(self):
# 不输入字符进行修改
self.driver.find_element(By.CSS_SELECTOR,"#setting_input_nickname").clear()
self.driver.find_element(By.CSS_SELECTOR,"#setting_submit_nickname").click()
BlogDriver.getScreeShot()
# 输入字符进行修改
time = datetime.datetime.now().strftime("%H%M%S")
self.driver.find_element(By.CSS_SELECTOR, "#setting_input_nickname").clear()
self.driver.find_element(By.CSS_SELECTOR, "#setting_input_nickname").send_keys("test"+time)
self.driver.find_element(By.CSS_SELECTOR,"#setting_submit_nickname").click()
BlogDriver.getScreeShot()
# 清除已有字符进行修改
self.driver.find_element(By.CSS_SELECTOR, "#setting_input_nickname").clear()
self.driver.find_element(By.CSS_SELECTOR, "#setting_submit_nickname").click()
BlogDriver.getScreeShot()
def UserEmailAddrTest(self):
# 不输入邮箱进行修改
self.driver.find_element(By.CSS_SELECTOR,"#setting_input_email").clear()
self.driver.find_element(By.CSS_SELECTOR,"#setting_submit_email").click()
BlogDriver.getScreeShot()
# 输入邮箱进行修改
# 输入正确邮箱
self.driver.find_element(By.CSS_SELECTOR,"#setting_input_email").send_keys("2890556976@qq.com")
self.driver.find_element(By.CSS_SELECTOR,"#setting_submit_email").click()
BlogDriver.getScreeShot()
self.driver.find_element(By.CSS_SELECTOR,"#setting_input_email").clear()
# 输入错误邮箱
self.driver.find_element(By.CSS_SELECTOR, "#setting_input_email").send_keys("121212121a@qq.com")
self.driver.find_element(By.CSS_SELECTOR, "#setting_submit_email").click()
BlogDriver.getScreeShot()
self.driver.find_element(By.CSS_SELECTOR, "#setting_input_email").clear()
# 清除已有邮箱进行修改
self.driver.find_element(By.CSS_SELECTOR,"#setting_input_email").clear()
self.driver.find_element(By.CSS_SELECTOR, "#setting_submit_email").click()
BlogDriver.getScreeShot()
def UserTelephoneTest(self):
#不输入电话号码进行修改
self.driver.find_element(By.CSS_SELECTOR,"#setting_input_phoneNum").clear()
self.driver.find_element(By.CSS_SELECTOR,"#setting_submit_phoneNum").click()
BlogDriver.getScreeShot()
# 输入电话号码进行修改
# 输入正确电话号码(不方便透露本人手机号码)
self.driver.find_element(By.CSS_SELECTOR,"#setting_input_phoneNum").send_keys("***********")
self.driver.find_element(By.CSS_SELECTOR,"#setting_submit_phoneNum").click()
BlogDriver.getScreeShot()
# 输入错误电话号码
self.driver.find_element(By.CSS_SELECTOR,"#setting_input_phoneNum").clear()
self.driver.find_element(By.CSS_SELECTOR,"#setting_input_phoneNum").send_keys("11111111111")
self.driver.find_element(By.CSS_SELECTOR,"#setting_submit_phoneNum").click()
BlogDriver.getScreeShot()
# 清除已有电话号码进行修改
self.driver.find_element(By.CSS_SELECTOR,"#setting_input_phoneNum").clear()
self.driver.find_element(By.CSS_SELECTOR,"#setting_submit_phoneNum").click()
BlogDriver.getScreeShot()
def UserProfileTest(self):
# 不填写后修改
self.driver.find_element(By.CSS_SELECTOR, "#settings_textarea_remark").clear()
self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_remark").click()
BlogDriver.getScreeShot()
# 填写后修改
self.driver.find_element(By.CSS_SELECTOR, "#settings_textarea_remark").send_keys("个人简介测试")
self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_remark").click()
BlogDriver.getScreeShot()
def UserChgPassword(self):
# 异常修改密码
# 错填原密码
self.driver.refresh()
self.driver.find_element(By.CSS_SELECTOR,"#settings_input_oldPassword").send_keys("123111")
self.driver.find_element(By.CSS_SELECTOR,"#settings_input_newPassword").send_keys("123000")
self.driver.find_element(By.CSS_SELECTOR,"#settings_input_passwordRepeat").send_keys("123000")
self.driver.find_element(By.CSS_SELECTOR,"#settings_submit_password").click()
BlogDriver.getScreeShot()
# 错填确认密码
self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").send_keys("123321")
self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").send_keys("123111")
self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").send_keys("123222")
self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()
BlogDriver.getScreeShot()
# 原密码与新原密码相同
self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").send_keys("123321")
self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").send_keys("123321")
self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").send_keys("123321")
self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()
BlogDriver.getScreeShot()
# 不填原密码
self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").send_keys("123000")
self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").send_keys("123000")
self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()
BlogDriver.getScreeShot()
# 不填确认密码
self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").send_keys("123321")
self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").send_keys("123111")
self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()
BlogDriver.getScreeShot()
# 正常修改密码
self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").send_keys("123321")
self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").send_keys("123111")
self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").send_keys("123111")
self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()
self.driver.find_element(By.CSS_SELECTOR,"body > div > div > div > div:nth-child(1) > div > div.card.card-md > div > h2")
BlogDriver.getScreeShot()
# 不要忘记改回来以便下次测试
self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("2890556976")
self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123111")
self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
self.driver.find_element(By.CSS_SELECTOR, "#index_nav_avatar").click()
self.driver.find_element(By.CSS_SELECTOR, "#index_user_settings").click()
self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").send_keys("123111")
self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").send_keys("123321")
self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").send_keys("123321")
self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()
5.8 创建启动文件
from tests.BlogDetailsTest import BlogDetailsTest
from tests.BlogListTest import BlogListTest
from tests.BlogLoginTest import BlogLoginTest
from tests.BlogPostEditingTest import BlogPostEditingTest
from tests.BlogRegTest import BlogRegTest
from common.Utils import BlogDriver
from tests.BlogUserTest import BlogUserTest
if __name__ == "__main__":
#注册页面
Reg = BlogRegTest()
Reg.RegEleTest()
Reg.RegFailTest()
Reg.RegSucTest()
#登录页面
Login = BlogLoginTest()
Login.LoginEleTest()
Login.LoginFailTest()
Login.LoginSucTest()
#论坛首页
List = BlogListTest()
List.ListEleTest()
List.ListInforRemPopupWindowTest()
List.ListPersonalDetailsPopupWindowTest()
#博客详情页
Details = BlogDetailsTest()
Details.DetailsEleTest()
Details.SendMessagePopupWindowTest()
#帖子编辑界面
PostEditing = BlogPostEditingTest()
PostEditing.PostEditingEleTest()
PostEditing.PostEditingFailSendTest()
PostEditing.PostEditingSucSendTest()
#用户中心界面
User = BlogUserTest()
User.UserEleTest()
User.UserNicknameTest()
User.UserEmailAddrTest()
User.UserTelephoneTest()
User.UserProfileTest()
User.UserChgPassword()
BlogDriver.driver.quit()
六、项目Bug
6.1 从任意界面页面点击回到前一页直接退出到登录页面




6.2 关键字搜索框输入关键字搜索无作用


6.3 用户中心页头像无法修改,邮箱地址,电话号码错误输入仍然可以修改,密码修改可以使用原密码,掩码显示后点击“小眼睛”无法明文显示


七、测试总结
本次测试对项目注册页,登录页,首页等页面提供的功能进行测试并通过Selenium编写了自动化测试脚本。项目各功能完成度较高,但仍然具有不足,一些小功能没有完全实现。页面回退跳转设计使用感不佳,影响用户体验。页面设计符合主流审美与布局且具有网站特点,有使用和输入引导并对错误有所提醒,日夜间模式切换且风格适宜,提高不同环境下用户体验。在不同浏览器下均可以稳定运行,兼容性好。对于隐私数据有掩码显示,提高使用安全性。
更多推荐


所有评论(0)