一、项目介绍

   此论坛系统是采用前后端分离的方式实现的,系统旨在为用户提供一个基于Web的文章发布和讨论平台。此次测试主要针对系统的功能性测试进行展开,该论坛系统主要由六个页面构成:注册页面、登录页面、论坛首页页面、帖子详情页面、我的帖子页面、个人中心页面。整体所能实现的大致功能:注册登录、查看和修改个人信息,以及进行帖子的增删查改等操作。


二、测试计划

1、测试目的:

测试论坛系统功能是否符合实际功能需求,并发现BUG提交测试报告

2、测试范围:

用户注册、用户登录、帖子首页、帖子详情页、帖子的书写与发布、退出账号等

3、测试环境:

Windows11

Selenium 4.0.0

python 3.10

pycharm 2022.1.3

Edge版本 134.0.3124.93(正式版本)(64位)

4、测试任务:

  • 编写论坛系统相关模块的测试用例,保证整体功能的正常运行;
  • 执行测试用例,并进行Web自动化测试;
  • 记录出现的bug以及设计缺陷;

三、测试内容

3.1、功能测试

3.1.1 编写Web测试用例

3.1.2 执行测试用例

1. 注册页面测试
测试场景一:

输入用户名存在,密码与确认密码一致,点击注册

预期结果:跳出警告加载窗口,提示用户已经存在

实际结果:与预期结果一致

测试场景二:

输入不存在的用户名,保持密码与确认密码一致,点击注册

预期结果:注册成功,跳转至登录页面

实际结果:与预期结果一致

测试场景三:

输入用户名,昵称、密码以及确认密码为空,点击注册

预期结果:注册失败,提示昵称、密码以及确认密码不为空

实际结果:与预期结果一致

2. 登录页面测试
测试场景一:

输入存在的用户名,正确的密码

预期结果:成功登录,跳转至系统首页界面

实际结果:与预期结果一致

测试场景二:

输入不存在的用户名,正确的密码

预期结果:登录失败,弹出警告“用户名或密码错误”

实际结果:与预期结果一致

测试场景三:

输入存在用户名,密码为空 

预期结果:登录失败,提示密码不能为空

实际结果:与预期结果一致

用户名为空,密码不为空

预期结果:登录失败,提示用户名不能为空

实际结果:与预期结果一致

 4. 注册页面测试

测试场景一:

输入不存在的用户名、昵称、密码、确认密码、点击同意条款进行注册

预期结果:注册成功并跳转至登录页面

实际结果:与预期结果一致

测试场景二:

输入用户名,不输入昵称,不输入密码,不输入确认密码,不同意条款

预期结果:注册失败,页面各个输入框下有警告提示

实际结果:与预期结果一致

 5. 论坛首页页面测试

测试场景一:

点击帖子不同分类板块中,帖子列表显示正常与否

预期结果:页面跳转至相应板块

实际结果:与预期结果一致

测试场景二:

点击顶栏中的“月亮/太阳”按钮

预期结果:深色/浅色主题进行切换

实际结果:点击“月亮”按钮,首页页面整体变暗;点击“太阳”按钮,首页页面整体变亮

测试场景三:

点击帖子发布按钮

预期结果:点击“发布按钮”之后跳转到帖子编辑页面

实际结果:页面成功跳转至帖子编辑页面

测试场景四:

点击顶栏中的“铃铛”按钮

预期结果:弹出所有站内信页面

实际结果:成功弹出页面

测试场景五:

点击首页的任意一个帖子

预期结果:点击后,跳转至该用户发布的帖子详情页界面

实际结果:成功跳转至帖子详情页面

测试场景六:

在搜索框中输入一个已发布帖子的标题信息进行搜索

预期结果:键入后,在搜索列表中显示搜索结果

实际结果:搜索功能失效,帖子列表信息并没有出现任何变化

 6. 帖子详情页面测试

测试场景一:

在该页面下,对帖子进行点赞

预期结果:点击点赞按钮,点赞数+1

实际结果:成功点赞,该用户帖子点赞数+1

测试场景二:

点击“发私信”按钮

预期结果:点击后,弹出“发送站内信”弹窗输入框

实际结果:成功弹出私信输入框

测试场景三:

在发送私信输入框中输入所要发送内容,并点击发送

预期结果:跳出成功等待弹窗,提示发送成功

实际结果:成功发送私信

测试场景四:

在回复信息编辑框中,输入所要回复内容,并点击回复

预期结果:键入回复内容,点击回复按钮,在“最新回复”下显示出用户所回复内容。

实际结果:成功在“最新回复”下显示,并跳出回复成功提示

7. 新帖子发布编辑页面测试

测试场景一:

选择版块,输入标题和帖子内容进行发布

预期结果:系统提示发布成功跳转至系统首页;

实际结果:新帖子发布成功,出现在系统首页首个;

BUG:版块中的各个模块,在顶栏中仅显示了Java、C++、MySQL,其余都没有出现;

   8. 我的帖子界面页面测试、

测试场景一:

点击自己发布的帖子进行查看,并在我的帖子界面检验页面中的关键元素是否存在。

预期结果:进入到自我发布帖子详情页界面;

实际结果:成功进入自我发布帖子详情页界面;

测试场景二:

在我的帖子详情页面下,对帖子进行点赞

预期结果:点击点赞按钮,点赞数+1

实际结果:成功点赞

测试场景三:

在回复信息编辑框中,输入所要回复内容,并点击回复

预期结果:在输入内容后,点击回复,最新回复下出现所写回复

实际结果:成功发送回复

  9. 个人中心界面页面测试

测试场景一:

点击“个人中心”

预期结果:跳转至个人中心页面,页面显示该登录用户的所有信息

实际结果:成功跳转,所有信息与相关测试用例相符

测试场景二:

修改按钮点击后是否能正常运行相应功能

预期结果:修改用户头像,上传本地图片进行更新修改;输入所需昵称,并刷新成功更改;输入原密码,填入修改后的密码和确认密码,点击“提交修改”按钮后,成功修改

实际结果:点击“提交修改”按钮后,跳转至登录页面,各个需要进行修改的部分都成功修改

3.2 Web自动化测试 

3.2.1 测试环境依赖

Selenium 4.0.0

python 3.11

pycharm 2022.1.3

edge 136.0.3240.50 (正式版本) (64 位)

3.2.2 参照测试用例,编写自动化测试脚本

1.创建浏览器驱动对象

Ultils.py

import datetime
import os.path
import sys
from selenium import webdriver
from selenium.webdriver.edge.service import Service as EdgeService
from webdriver_manager.microsoft import EdgeChromiumDriverManager

class Driver:
    def __init__(self):
        edge_driver_path = r"D:\edgedriver_win64\msedgedriver.exe"
        options = webdriver.EdgeOptions()
        self.driver = webdriver.Edge(service=EdgeService(executable_path=edge_driver_path), options=options)
        self.driver.maximize_window()
        self.driver.implicitly_wait(5)
    # 截图功能
    def getScreeShot(self):
        dirname = datetime.datetime.now().strftime("%Y-%m-%d")
        # 不存该目录在则创建
        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)

ForumDriver = Driver()

 

 2.对整体所有页面进行测试,确认自动化脚本无误

RunTest.py

from common.Ultils import ForumDriver
from tests import ForumLogin
from tests import ForumRegister
from tests import ForumHomepage
from tests import ForumBlogDetail
from tests import ForumNewposts
from tests import ForumReplyPM
from tests import ForumMyPosts
from tests import ForumPersonalCenter

if __name__ == "__main__":
    ForumRegister.ForumRegister().RegisterTest()
    ForumLogin.ForumLogin().ForumLoginTest()
    ForumHomepage.ForumHomepage().ForumHomepageTest()
    ForumBlogDetail.ForumBlogDetail().ForumBlogDetailTest()
    ForumNewposts.ForumNewpost().ForumNewpostTest()
    ForumReplyPM.ForumReplyPM().ForumReplyPMTest()
    ForumMyPosts.ForumMyPosts().ForumMyPostsTest()
    ForumPersonalCenter.ForumPersonalCenter().ForumPersonalCenterTest()
    ForumDriver.driver.quit()

 

 3. 论坛系统登录页面测试

ForumLogin.py

from common.Ultils import ForumDriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

class ForumLogin:
    url = ""
    driver = ""
    def __init__(self):
        self.url="http://127.0.0.1:58080/sign-in.html"
        self.driver = ForumDriver.driver
        self.driver.get(self.url)
    def ForumLoginTest(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("zhangsan")
        self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("123456")
        # #点击登录
        # self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
        #添加显示等待
        WebDriverWait(self.driver,10).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR,"#submit"))
        )
        self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
        # #显示等待(需要有指定等待的条件)
        # WebDriverWait(self.driver,5)

        #登录成功的验证(页面跳转)
        WebDriverWait(self.driver,15).until(
            EC.url_matches("http://127.0.0.1:58080/index.html"),
            EC.presence_of_element_located((By.CSS_SELECTOR,"#article_list_board_title"))
        )
        print("页面登录成功")

 

4. 论坛系统注册页面测试

ForumRegister.py

from common.Ultils import ForumDriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

class ForumRegister:
    url=""
    driver=""
    def __init__(self):
        url="http://127.0.0.1:58080/sign-up.html"
        self.driver = ForumDriver.driver
        self.driver.get(url)

    def RegisterTest(self):
        # 对于页面元素的检查
        # 用户注册标题
        self.driver.find_element(By.CSS_SELECTOR,"#signUpForm > div > h2")
        # 用户名及输入框
        self.driver.find_element(By.CSS_SELECTOR,"#signUpForm > div > div:nth-child(2) > label")
        self.driver.find_element(By.CSS_SELECTOR,"#username").clear()
        self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("z_y_x2")
        # 昵称及输入框
        self.driver.find_element(By.CSS_SELECTOR,"#signUpForm > div > div:nth-child(3) > label")
        self.driver.find_element(By.CSS_SELECTOR,"#nickname").clear()
        self.driver.find_element(By.CSS_SELECTOR,"#nickname").send_keys("cc_cjs")
        # 密码及输入框
        self.driver.find_element(By.CSS_SELECTOR,"#signUpForm > div > div:nth-child(4) > label")
        self.driver.find_element(By.CSS_SELECTOR,"#password").clear()
        self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("785718")
        # 确认密码及输入框
        self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(5) > label")
        self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").send_keys("785718")

        # 同意勾选框
        self.driver.find_element(By.CSS_SELECTOR,"#signUpForm > div > div:nth-child(6) > label")
        self.driver.find_element(By.CSS_SELECTOR,"#policy").click()

        # 注册按钮
        self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
        # 注册后页面是否成功跳转
        print("注册成功")

 

 

   5. 论坛系统首页页面测试

ForumHomepage.py

from common.Ultils import ForumDriver
from selenium.webdriver.common.by import By

class ForumHomepage:
    url=""
    driver=""
    def __init__(self):
        url="http://127.0.0.1:58080/index.html"
        self.driver=ForumDriver.driver
        self.driver.get(url)
    def ForumHomepageTest(self):
        # 检查页面应有的元素
        # 用户信息
        self.driver.find_element(By.CSS_SELECTOR,"#index_nav_avatar").click()
        self.driver.find_element(By.CSS_SELECTOR,"#index_user_settings")
        # 帖子板块分类
        self.driver.find_element(By.CSS_SELECTOR,"#navbar-menu > div > div")
        # 帖子发布按钮
        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")
        # 帖子列表
        self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-body > div > div > div > div > div")
        # 搜索栏
        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")
        # 深/浅主题切换
        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")
        # 消息通知栏
        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").click()
        self.driver.find_element(By.CSS_SELECTOR,"#index_message_offcanvasEnd > div.offcanvas-header")
        self.driver.find_element(By.CSS_SELECTOR,"#index_div_message")

 

6. 论坛系统帖子详情页页面测试

ForumBlogDetail.py

 

import time
from common.Ultils import ForumDriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains

class ForumBlogDetail:
    url=""
    driver=""
    def __init__(self):
        url = "http://127.0.0.1:58080/index.html"
        self.driver = ForumDriver.driver
        self.driver.get(url)

    def ForumBlogDetailTest(self):
        # 点击第二篇博客(修正选择器)
        blog_entry = WebDriverWait(self.driver, 10).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR,
            "#artical-items-body > div:nth-child(2) > div > div.col > div.text-truncate > a > strong"
            ))
        )
        blog_entry.click()

        # 等待详情页加载完成
        WebDriverWait(self.driver, 15).until(
            # EC.url_contains("#bit-forum-content"),  # 根据实际URL调整
            # "未进入详情页"
            EC.element_to_be_clickable(
                (By.CSS_SELECTOR,"#bit-forum-content")
            )
        )
        print("页面加载成功")

        # 显式等待作者头像
        WebDriverWait(self.driver, 15).until(
            EC.visibility_of_element_located((By.CSS_SELECTOR, "#bit-forum-content > div.page-body > div > div > div:nth-child(1) > div.col-9.card.card-lg > div.card-body")),
            "作者帖子内容加载超时"
        )

        # 博客用户昵称
        self.driver.find_element(By.CSS_SELECTOR, "#article_details_author_name")
        # 用户头像
        self.driver.find_element(By.CSS_SELECTOR, "#article_details_author_avatar")
        # # 博客所收的反馈信息
        # self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-header.d-print-none > div > div.col-auto.d-none.d-md-inline > ul > li:nth-child(4)")

        # 帖子标题
        self.driver.find_element(By.CSS_SELECTOR, "#details_article_content_title")

        # 帖子内容
        self.driver.find_element(By.CSS_SELECTOR, "#details_article_content > p")

        # 评论区列表
        self.driver.find_element(By.CSS_SELECTOR, "#details_reply_area")

        # # 检测私信弹窗的出现(此弹窗可以定位)——发送成功,跳出“发送成功”弹窗
        # # 若有则发送
        # self.driver.find_element(By.CSS_SELECTOR, "#offcanvasEndLabel").click()
        # self.driver.find_element(By.CSS_SELECTOR, "#index_message_receive_content").send_keys("cool!")
        # self.driver.find_element(By.CSS_SELECTOR, "#btn_index_send_message").click()
        # # 等待发送成功的时间
        # time.sleep(5)
        # self.driver.find_element(By.CSS_SELECTOR,
        #                          "#index_message_modal > div > div > div.modal-header > button").click()
        # # 等待弹窗的消失
        # WebDriverWait(self.driver, 15).until(
        #     EC.invisibility_of_element_located((By.CSS_SELECTOR,"#index_message_modal > div > div"))
        # )


        # 点赞按钮
        like_button = WebDriverWait(self.driver, 15).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, "#details_btn_like_count"))
        )
        like_button.click()
        # 等待点赞成功时间
        time.sleep(5)

        reply_button = WebDriverWait(self.driver, 15).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, "#details_btn_article_reply"))
        )

        # 滚动元素到视窗中心
        actions = ActionChains(self.driver)
        actions.move_to_element(reply_button).perform()

        # 验证评论是否能够发送成功
        self.driver.find_element(By.CSS_SELECTOR, "#article_details_reply > div.editormd-toolbar > div > ul > li:nth-child(12) > a > i").click()

        # 回复按钮
        reply_button.click()

        print("详情页元素验证通过")

 

  7. 论坛系统新帖子发布页面功能测试

ForumNewposts.py

import time
from common.Ultils import ForumDriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
class ForumNewpost:
    url=""
    driver=""
    def __init__(self):
        url="http://127.0.0.1:58080/index.html"
        self.driver = ForumDriver.driver
        self.driver.get(url)
    def ForumNewpostTest(self):
        # 等待页面的渲染完成
        Post_button = WebDriverWait(self.driver,15).until(
            EC.element_to_be_clickable((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"))
        )
        Post_button.click()
        # 跳转至论坛帖子发布编辑页面
        # 版块
        self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-body > div > div > div.card-body > div:nth-child(1)")
        # 标题
        self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-body > div > div > div.card-body > div:nth-child(2)")
        # 内容
        self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-body > div > div > div.card-body > div:nth-child(3)")
        # 发布按钮
        self.driver.find_element(By.CSS_SELECTOR,"#article_post_submit")

        # 按键功能检测
        self.driver.find_element(By.CSS_SELECTOR,"#article_post_title").send_keys("NewpostTest")
        # 内容创造编辑
        self.driver.find_element(By.CSS_SELECTOR,"#edit-article > div.editormd-toolbar > div > ul > li:nth-child(13) > a > i").click()
        # 点击发布按钮
        Publish_button = WebDriverWait(self.driver,15).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR,"#article_post_submit"))
        )

        # 滚动元素到视图页面
        actions = ActionChains(self.driver)
        actions.move_to_element(Publish_button).perform()
        # 点击发布
        Publish_button.click()

        time.sleep(5)
        # 在首页是否出现新的帖子
        self.driver.find_element(By.CSS_SELECTOR,"#artical-items-body > div:nth-child(1) > div > div.col")

 

8. 论坛系统回复站内信功能测试

ForumReplyPM.py

import time
from common.Ultils import ForumDriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

class ForumReplyPM:
    url=""
    driver=""
    def __init__(self):
        url="http://127.0.0.1:58080/index.html?theme=light"
        self.driver=ForumDriver.driver
        self.driver.get(url)

    def ForumReplyPMTest(self):
        # 点击“消息通知“图标按钮
        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").click()
        # "所有站内信"是否全部显示
        self.driver.find_element(By.CSS_SELECTOR,"#index_div_message")

        # 若有消息并未阅读解引用以下代码
        # # 点击其中一条消息进行回复
        # self.driver.find_element(By.CSS_SELECTOR,"#index_div_message_list > div:nth-child(4) > div > div.col.text-truncate > a > span:nth-child(2)").click()
        # # 识别弹窗页面
        # self.driver.find_element(By.CSS_SELECTOR,"#index_message_reply_modal > div > div > div.modal-header")
        # # 点击回复
        # self.driver.find_element(By.CSS_SELECTOR,"#btn_index_message_reply").click()
        # # # 发送内容——发送对话框加载出现后
        # # Reply_dialog = WebDriverWait(self.driver,15).until(
        # #     EC.visibility_of_element_located((By.CSS_SELECTOR,"#index_message_reply_receive_content"))
        # # )
        # # Reply_dialog.send_keys("hello")
        #
        # # 等待弹窗主体加载完成——重点
        # WebDriverWait(self.driver, 15).until(
        #     EC.visibility_of_element_located((By.CSS_SELECTOR, "#index_message_reply_div"))
        # )
        # # 再定位输入框
        # Reply_dialog = WebDriverWait(self.driver, 15).until(
        #     EC.element_to_be_clickable((By.CSS_SELECTOR, "#index_message_reply_receive_content"))
        # )
        # Reply_dialog.click()
        # Reply_dialog.send_keys("hello")
        #
        # # 点击发送按钮
        # self.driver.find_element(By.CSS_SELECTOR,"#btn_index_send_message_reply").click()
        # # 静置发送成功的时间
        # time.sleep(5)

 

9. 论坛系统我的帖子页面测试

ForumMyPosts.py

 

import time
from common.Ultils import ForumDriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

class ForumMyPosts:
    url = ""
    driver = ""
    def __init__(self):
        url = "http://127.0.0.1:58080/"
        self.driver = ForumDriver.driver
        self.driver.get(url)

    def ForumMyPostsTest(self):
        # 点击首页右上角
        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.dropdown").click()
        # 弹窗
        WebDriverWait(self.driver,15).until(
            EC.visibility_of_element_located((By.CSS_SELECTOR,"body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > div > div.nav-item.dropdown > div"))
        )
        # 点击“我的帖子”
        mypost_button = WebDriverWait(self.driver,15).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR,"#index_user_profile"))
        )
        mypost_button.click()

        time.sleep(2)

        # 个人介绍板块
        self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-body > div > div > div.col-lg-4 > div > div > div > div")
        # 用户头像
        self.driver.find_element(By.CSS_SELECTOR,"#profile_avatar")
        # 用户昵称
        self.driver.find_element(By.CSS_SELECTOR,"#profile_nickname")
        # 发帖数
        self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-header.d-print-none > div > div > div.col > div > div:nth-child(1)")
        # 邮箱信息
        self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-header.d-print-none > div > div > div.col > div > div:nth-child(2)")
        # 注册日期
        self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-header.d-print-none > div > div > div.col > div > div:nth-child(3)")
        # 用户发布的帖子列表
        self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-body > div > div > div.col")

        # 点击其中一条帖子
        self.driver.find_element(By.CSS_SELECTOR,"#profile_article_body > li:nth-child(1) > div.card.timeline-event-card > div > div > div > div > div.text-truncate > a > strong").click()

 

 10. 论坛系统个人中心页面测试

import time
from common.Ultils import ForumDriver
from selenium.webdriver.common.by import By

class ForumPersonalCenter:
    url = ""
    driver = ""
    def __init__(self):
        url="http://127.0.0.1:58080/index.html"
        self.driver = ForumDriver.driver
        self.driver.get(url)

    def ForumPersonalCenterTest(self):
        # 个人信息中心详情页面
        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-body > div > div > div > div.col.d-flex.flex-column > div")
        self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-body > div > div > div > div.col-3.d-none.d-md-block.border-end > div")

        # 填写/修改昵称
        self.driver.find_element(By.CSS_SELECTOR,"#setting_input_nickname").clear()
        self.driver.find_element(By.CSS_SELECTOR,"#setting_input_nickname").click()
        self.driver.find_element(By.CSS_SELECTOR,"#setting_input_nickname").send_keys("zhangsan1")
        time.sleep(3)

        # 填写/修改邮箱地址
        self.driver.find_element(By.CSS_SELECTOR,"#setting_input_email").clear()
        self.driver.find_element(By.CSS_SELECTOR,"#setting_input_email").click()
        self.driver.find_element(By.CSS_SELECTOR,"#setting_input_email").send_keys("xbt785718491@qq.com")

        # 填写/修改电话号码
        self.driver.find_element(By.CSS_SELECTOR,"#setting_input_phoneNum").clear()
        self.driver.find_element(By.CSS_SELECTOR,"#setting_input_phoneNum").click()
        self.driver.find_element(By.CSS_SELECTOR,"#setting_input_phoneNum").send_keys("112233")

        # 修改密码测试
        self.driver.find_element(By.CSS_SELECTOR,"#settings_input_oldPassword").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR,"#settings_input_newPassword").send_keys("1234567")
        self.driver.find_element(By.CSS_SELECTOR,"#settings_input_passwordRepeat").send_keys("1234567")
        time.sleep(3)
        self.driver.find_element(By.XPATH, "//*[@id='settings_submit_password']").click()

四、项目Bug

Bug描述:

1、搜索功能失效,在输入内容后,点击回车页面帖子列表内容未改变;

2、在新帖发布页面有的模块没有在首页显示

五、测试总结

本次测试对论坛系统的整体核心功能进行测试并运用selenium、WebDriverManager,利用python代码编写自动化测试脚本,同时,对于系统测试出现的问题,如首页界面的搜索功能,完善首页的各模块分类等,以便完善提高用户的体验。

 六、自动化测试脚本

测试代码及演示视频

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐