当前位置: 首页 > news >正文

论坛系统自动化测试报告

一、项目介绍

        为论坛系统实施自动化测试,并编写自动化测试用例,自动化测试是通过Selenium编写的自动化脚本,自动化测试用例覆盖了登录界面、注册页面、论坛列表页等核心功能,以来确保每个页面各个每个模块功能的稳定,使用户有流畅的论坛浏览和使用体验。

二、测试计划

2.1功能测试

2.1.1 编写Web测试用例

设计测试用例方法一般从以下几个方面设计:

功能测试、界面测试、性能测试、易用性测试、安全性测试、兼容性测试等六个方面进行设计,但是论坛系统是一个web网站,主要是针对核心功能进行测试,测试功能点如下:

2.1.2 执行测试用例

1.登录测试

(1)简介

        用户名与密码已存储在数据库中,登录成功即可跳转到列表页;点击”退出“按钮,自动跳转到登录页。

(2)测试用例展示

(a)界面

(b)输入正确的账号和密码(以账号:li,密码:123)

        预期结果:跳转到博客列表页

        实际结果展示

 (c)输出错误的账号或密码

        预期结果:显示弹窗,并提示用户名不存在或者密码错误

        实际结果如下图

2.论坛列表页

(1)简介

登录成功将跳转到论坛列表页、当前用户的头像、用户名(是否与登录账号相同)、可以看到自己与他人发表的论坛(论坛的标题、论坛的作者、发表论坛的时间、论坛的浏览量、论坛的点赞量、论坛的留言)等信息。

(2)测试用例展示

(a)列表页展示

(b)搜索功能测试

输入要搜索的内容:(点击搜索之后并无反应)

bug:搜索功能尚未实现

3.论坛详情页面

(1)   简介

        在论坛列表页面点击该论坛,即可跳转到论坛详情页,这时即可看到论坛的全部内容。

(2)  测试效果展示

(a) 论坛详情页展示

(b) 论坛详情页面测试发私信功能

(c) 论坛详情页 发布留言用例

4.论坛编辑页面

(1)  简介

        进入到论坛列表页,点击右上角的发布帖子,即可进入论坛的编辑页面,也可进行发布论坛

(2)  实际效果展示

         (a)登录之后会先来到论坛列表页

(b) 点击右上角的发布帖子按钮即可进入论坛编辑页面

(c)  输入正确的标题和内容,点击发布按钮即可成功发布论坛

(d)  点击“发布”按钮后,即可返回到论坛列表页面查看新发布的论坛

5.我的中心用例

(1)  简介

        进入到论坛详情页面后,点击右上角用户头像,点击个人中心即可进入我的中心页面

(a)  实际效果展示

(b)  我的贴子页面

6.注册页面

(1)  简介

        在登录页面,点击下面的注册按钮,即可注册账号,随后可进行重新登陆

(a)  实际效果展示

(b)  输入正确的用户名、昵称、密码、确认密码、勾选协议,并点击提交按钮

2.2  使用Selenium进行Web自动化测试(Python)
 

2.2.1  安装WebDriverManager驱动管理程序和selenium 类库
        WebDriverManager是一个用于管理Web驱动程序的工具,主要用于自动化测试领域。在进行 Selenium 测试时,需要一个与浏览器相匹配的 Web 驱动程序,以便控制和操作浏览器。WebDriverManager能够自动下载和管理浏览器驱动程序,会自动检测本地系统中安装的浏览器,并下载对应的浏览器驱动程序(如ChromeDriver、FirefoxDriver等)。这避免了手动下载和配置驱动程序的繁琐过程,提高了自动化测试的效率和稳定性,以便在自动化测试中使用这些浏览器。
 
2.2.2 新建项目

在项目中点击File->Settings进入界面,查看“Project:当前项目名”中是否存在selenium和webdriver-manager两个包。

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

1.创建浏览器对象

        为了之后可以避免冗余的代码,并且可以节省空间以及时间,所以要将调用的浏览器对象放到一个单独的文件中,这里定义一个Utils.py文件,用来写测试中需要的配置文件(屏幕截图、隐式等待) 

         有时候我们想要知道每次运行结束前的界面是什么情况,就可以使用屏幕截图来保存当时的情况。

①首先我们定义一个driver类

②定义俩个我们所需要的构造函数

import datetime
import os
import sys
from selenium import webdriver
class Driver:
    driver = ""
    def __init__(self):
        self.driver = webdriver.Edge()
        self.driver.implicitly_wait(10)
    def getScreen(self):
        # 创建屏幕截图
        dirname = datetime.datetime.now().strftime("%Y-%m-%d")
        filename = sys._getframe().f_back.f_code.co_name + "-" + datetime.datetime.now().strftime(
            '%Y-%m-%d-%H%M%S') + ".png"
        # 判断是否有该文件夹
        os.makedirs(f"../images/{dirname}", exist_ok=True)
        self.driver.save_screenshot(f'../images/{dirname}/{filename}')
MyBlogDriver = Driver()

2.创建一个总入口文件,为了方便统一调用各个自动化测试接口(RunTest.py)

# 总运行入口文件
if __name__ == '__main__':

3.进行论坛“登录”自动化测试用例

①  新建一个论坛登录测试文件,命名为:Login.py

②  引入Utils.py文件(获取到创建的浏览器对象)和其他需要的配置文件

③  创建一个类对象,我们在这里命名为与文件同名(MyLogin)

④  引入一些需要用到的第三方库

⑤  构造一个成功登录博客的函数(Suclogin)与一个失败登录博客的构造函数(Faillogin)

⑥  注意清空输入框的内容后才能再次输入用户名及密码进行登录

⑦  测试内容包括:输入正确的账号密码进行登录,以及账号错误与密码正确,账号正确密码错误

#论坛登录页面测试
import time
from selenium.webdriver.common.by import By
from 论坛系统测试.common.Utils import MyBlogDriver
class MyLogin:
    driver = ""
    url = ""
    def __init__(self):
        self.driver = MyBlogDriver.driver
        self.url = "http://127.0.0.1:9580/sign-in.html"
        self.driver.get(self.url)
    # 成功登录函数
    def Suclogin(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("li")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
    # 修改完密码之后重新登录函数方法
    def LogBackIn(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("li")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
    #失败登录函数
    def Faillogin(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("ll")
        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, "#username").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#password").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("li")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("12345")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        # 账号为空 密码正确
        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("")
        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, "#username").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#password").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("li")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        # 账号为空 密码为空
        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("")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()

4.”论坛列表页“自动化测试

①  新建一个博客列表页测试文件,命名为:List.py

②  引入Utils.py文件(获取到创建的浏览器对象)和其他需要的配置文件

③  创建一个类对象,我们在这里命名为与文件同名(List)

④  引入一些需要用到的第三方库

⑤  构造一个成功登录论坛的函数(Suclist)(由于未登录的情况下会直接返回到登录页面 所以未进行测试未登录状态下的博客列表页)

⑥  测试内容包括:论坛标题、论坛内容、按钮等是否存在,以及"用户名称是否与登录的账号一致”

# 论坛列表页测试用例
import time
from selenium.webdriver.common.by import By
from 论坛系统测试.common.Utils import MyBlogDriver
class List:
    driver = ""
    url = ""
    def __init__(self):
        self.driver = MyBlogDriver.driver
        self.url = "http://127.0.0.1:9580/index.html"
        # self.driver.get(self.url)
    def SucList(self):
        # time.sleep(2)
        # 查看页面元素是否有发布帖子标签
        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,"#nav_board_index > a > span.nav-link-title")
        # 判断是否有论坛标题
        self.driver.find_element(By.CSS_SELECTOR,"#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong")
        # 是否含有论坛作者
        self.driver.find_element(By.CSS_SELECTOR,"#artical-items-body > div:nth-child(1) > div > div.col > div.text-muted.mt-2 > div > div.col > ul > li:nth-child(1)")
        # 论坛是否具有发表时间
        self.driver.find_element(By.CSS_SELECTOR,"#artical-items-body > div:nth-child(1) > div > div.col > div.text-muted.mt-2 > div > div.col > ul > li:nth-child(2)")
        # 跳转到第一篇论坛
        self.driver.find_element(By.CSS_SELECTOR,"#artical-items-body > div:nth-child(5) > div > div.col > div.text-truncate > a > strong").click()
        time.sleep(2)
        # MyBlogDriver.getScreen()

from 论坛系统测试.TestCase import Login, List, MyDetail, Edit, MySign, UserCenter
from 论坛系统测试.common.Utils import MyBlogDriver
if __name__ == '__main__':
    # 正确登录
    Login.MyLogin().Suclogin()
    # 论坛列表页测试用例
    List.List().SucList()
    MyBlogDriver.driver.quit()

测试结果如下:

5.”论坛详情页“自动化测试

①  新建一个博客详情页测试文件,命名为:MyDetail.py

②  引入Utils.py文件(获取到创建的浏览器对象)和其他需要的配置文件

③  创建一个类对象,我们在这里命名为与文件同名(MyDetail)

④  引入一些需要用到的第三方库

⑤  构造一个成功登录论坛的函数(detail)(由于未登录的情况下会直接返回到登录页面 所以未进行测试未登录状态下的博客详情页)

⑥  测试内容包括:论坛标题、论坛内容、发私信按钮,回复按钮等是否存在,以及"用户名称是否与登录的账号一致”

#论坛详情页测试用例
import time
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By
from 论坛系统测试.common.Utils import MyBlogDriver
class MyDetail:
    driver = ""
    url = ""
    def __init__(self):
        # self.url = "http://127.0.0.1:9580/index.html"
        self.driver = MyBlogDriver.driver
        # self.driver.get(self.url)
    def SucDetail(self):
        # 查早论坛是否有具体标题
        self.driver.find_element(By.CSS_SELECTOR,"#details_article_title")
        # 查早论坛有发布的时间
        self.driver.find_element(By.CSS_SELECTOR,"#details_article_createTime")
        # 查早论坛的作者
        self.driver.find_element(By.CSS_SELECTOR,"#article_details_author_name")
        # 查找论坛的内容
        self.driver.find_element(By.CSS_SELECTOR,"#details_article_content > p")
        # 给该论坛点赞
        self.driver.find_element(By.CSS_SELECTOR,"#details_btn_like_count > svg")
        # 点击发私信按钮
        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("hello")
        # 点击发送按钮
        self.driver.find_element(By.CSS_SELECTOR,"#btn_index_send_message").click()
        self.driver.find_element(By.CSS_SELECTOR, "#index_message_modal > div > div > div.modal-header > button").click()
        text = self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div > h2").text
        if text == "成功":
            self.driver.find_element(By.CSS_SELECTOR, "#index_message_modal > div > div > div.modal-header > button").click()
        time.sleep(2)
        # 给该论坛留言
        element = self.driver.find_element(By.CSS_SELECTOR,"#article_details_reply > div.editormd-toolbar > div > ul > li:nth-child(17) > a")
        self.driver.execute_script("arguments[0].click();", element)
        # 点击回复按钮
        time.sleep(2)
        self.driver.find_element(By.CSS_SELECTOR,"#details_btn_article_reply > svg").click()
from 论坛系统测试.TestCase import Login, List, MyDetail, Edit, MySign, UserCenter
from 论坛系统测试.common.Utils import MyBlogDriver
if __name__ == '__main__':
    # 正确登录
    Login.MyLogin().Suclogin()
    # 论坛列表页测试用例
    List.List().SucList()
    # 论坛详情页测试用例
    MyDetail.MyDetail().SucDetail()
    MyBlogDriver.driver.quit()

测试效果如下:

6.”论坛的编辑与发布“自动化测试

①  新建一个论坛编辑页测试文件,命名为:Edit.py

②  引入Utils.py文件(获取到创建的浏览器对象)和其他需要的配置文件

③  创建一个类对象,我们在这里命名为与文件同名(MyEdit)

④  引入一些需要用到的第三方库

⑤  构造一个成功发布论坛的函数(SucEdit)

⑥  测试内容包括:论坛标题、论坛内容、发布按钮等是否存在,以及不写标题写内容能发发布论坛,写标题写内容不点击发布按钮是否能发布论坛,写标题不写内容能否发布论坛用例

# 论坛编辑页测试用例
import time
from telnetlib import EC

from selenium.webdriver import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait

from 论坛系统测试.common.Utils import MyBlogDriver
class MyEdit:
    driver = ""
    url = ""
    def __init__(self):
        self.driver = MyBlogDriver.driver
        self.url = "http://127.0.0.1:9580/index.html"
        self.driver.get(self.url)
    # 元素检查
    def SearchEdit(self):
        # time.sleep(2)
        # 跳转到论坛编辑页面
        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-body > div > div > div.card-body > div:nth-child(1) > label > strong")
        # 查找标题板块
        self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-body > div > div > div.card-body > div:nth-child(2) > label > strong")
        # 查找发布按钮
        self.driver.find_element(By.CSS_SELECTOR,"#article_post_submit")
    # 正确发布论坛
    def SucEdit(self):
        # time.sleep(2)
        # 跳转到论坛编辑页面
        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()
        # 选择C++板块
        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("hello")
        # 填写内容
        # 定位到输入标题的位置
        title_label = self.driver.find_element(By.CSS_SELECTOR, "#article_post_title")
        # tab键跳转到输入内容的位置
        title_label.send_keys(Keys.TAB)  # 重点
        ele = self.driver.switch_to.active_element
        # 正常输入内容
        ele.send_keys("你好")
        time.sleep(2)
        # 查找内容元素
        # self.driver.find_element(By.CSS_SELECTOR,"#edit-article > div.editormd-toolbar > div > ul > li:nth-child(12) > a > i").click()
        # self.driver.find_element(By.CSS_SELECTOR,"#edit-article > div.editormd-toolbar > div > ul > li:nth-child(20) > a").click()
        # 点击发布按钮
        element1 = self.driver.find_element(By.CSS_SELECTOR,"#article_post_submit")
        self.driver.execute_script("arguments[0].click();", element1)
        # text = self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div > h2").text
        # print(text)
        time.sleep(2)
        # MyBlogDriver.getScreen()


from 论坛系统测试.TestCase import Login, List, MyDetail, Edit, MySign, UserCenter
from 论坛系统测试.common.Utils import MyBlogDriver
if __name__ == '__main__':
    # 正确登录
    Login.MyLogin().Suclogin()
    # 论坛列表页测试用例
    List.List().SucList()
    # 论坛详情页测试用例
    MyDetail.MyDetail().SucDetail()
    # 论坛编辑页测试用例
    Edit.MyEdit().SearchEdit()
    Edit.MyEdit().SucEdit()
    MyBlogDriver.driver.quit()

测试效果如下:

7.”论坛注册功能“自动化测试

①  新建一个论坛编辑页测试文件,命名为:MySign.py

②  引入Utils.py文件(获取到创建的浏览器对象)和其他需要的配置文件

③  创建一个类对象,我们在这里命名为与文件同名(MySign)

④  引入一些需要用到的第三方库

⑤  构造一个成功注册的函数(SucSign)和几个失败注册的函数

⑥  测试内容包括:输入正确的用户名、昵称、密码、确认密码、勾选协议、提交按钮,以及错误的注册方法

# 注册页面测试用例
from selenium.webdriver.common.by import By
from 论坛系统测试.common.Utils import MyBlogDriver
class MySign:
    driver = ""
    url = ""
    def __init__(self):
        self.url = "http://127.0.0.1:9580/sign-up.html"
        self.driver = MyBlogDriver.driver
        self.driver.get(self.url)
    #正确注册函数
    def SucSign(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#password").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").clear()
        # 查找用户名输入框
        self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("moon")
        # 查早昵称输入框
        self.driver.find_element(By.CSS_SELECTOR,"#nickname").send_keys("测试员0101")
        # 查找密码输入框
        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()
        #MyBlogDriver.getScreen()
    # 失败注册函数(将用户名框为空)
    def FailSign1(self):
        # 查找用户名输入框
        self.driver.find_element(By.CSS_SELECTOR, "#username").clear()
        # 查早昵称输入框
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("测试员0101")
        # 查找密码输入框
        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()
        #MyBlogDriver.getScreen()
    # 失败注册函数(将昵称框为空)
    def FailSign2(self):
        # 查找用户名输入框
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("moon")
        # 查早昵称输入框
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").clear()
        # 查找密码输入框
        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()
        #MyBlogDriver.getScreen()
    # 失败注册函数(将密码框为空)
    def FailSign3(self):
        # 查找用户名输入框
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("moon")
        # 查早昵称输入框
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("测试员0101")
        # 查找密码输入框
        self.driver.find_element(By.CSS_SELECTOR, "#password").clear()
        # 查找确认密码输入框
        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()
        #MyBlogDriver.getScreen()

    # 失败注册函数(将确认密码框为空)
    def FailSign4(self):
        # 查找用户名输入框
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("moon")
        # 查早昵称输入框
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("测试员0101")
        # 查找密码输入框
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        # 查找确认密码输入框
        self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").clear()
        # 查找协议的勾选框
        self.driver.find_element(By.CSS_SELECTOR, "#policy").click()
        # 查找注册按钮
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        #MyBlogDriver.getScreen()

    # 失败注册函数(不勾选用户协议)
    def FailSign5(self):
        # 查找用户名输入框
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("moon")
        # 查早昵称输入框
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("测试员0101")
        # 查找密码输入框
        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()
        #MyBlogDriver.getScreen()
    # 失败注册函数(不点击注册按钮)
    def FailSign6(self):
        # 查找用户名输入框
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("moon")
        # 查早昵称输入框
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("测试员0101")
        # 查找密码输入框
        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")
        #MyBlogDriver.getScreen()

    # 失败注册函数(密码和确认密码不一致)
    def FailSign7(self):
        # 查找用户名输入框
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("moon")
        # 查早昵称输入框
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("测试员0101")
        # 查找密码输入框
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        # 查找确认密码输入框
        self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").send_keys("123")
        # 查找协议的勾选框
        self.driver.find_element(By.CSS_SELECTOR, "#policy").click()
        # 查找注册按钮
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        #MyBlogDriver.getScreen()
from 论坛系统测试.TestCase import Login, List, MyDetail, Edit, MySign, UserCenter
from 论坛系统测试.common.Utils import MyBlogDriver
if __name__ == '__main__':
    # 错误注册
    MySign.MySign().FailSign1()
    MySign.MySign().FailSign2()
    MySign.MySign().FailSign3()
    MySign.MySign().FailSign4()
    MySign.MySign().FailSign5()
    MySign.MySign().FailSign6()
    MySign.MySign().FailSign7()
    # 正确注册
    MySign.MySign().SucSign()
    # 正确登录
    Login.MyLogin().Suclogin()
    # 论坛列表页测试用例
    List.List().SucList()
    # 论坛详情页测试用例
    MyDetail.MyDetail().SucDetail()
    # 论坛编辑页测试用例
    Edit.MyEdit().SearchEdit()
    Edit.MyEdit().SucEdit()
    MyBlogDriver.driver.quit()

测试结果如下:

8.”我的中心页面“自动化测试

①  新建一个我的中心页面测试文件,命名为:UserCenter.py

②  引入Utils.py文件(获取到创建的浏览器对象)和其他需要的配置文件

③  创建一个类对象,我们在这里命名为与文件同名(UserCenter)

④  引入一些需要用到的第三方库

⑤  构造一个我的账户的函数(Account)和我的贴子页面函数(MyPost)

⑥  测试内容包括:查找用户名,用户的头像,修改用户的邮箱,修改用户的电话,修改账户密码,查找用户发表的贴子

#用户中心测试用例
import time

from selenium.webdriver.common.by import By
from 论坛系统测试.common.Utils import MyBlogDriver
class UserCenter:
    driver= ""
    url = ""
    def __init__(self):
        self.driver = MyBlogDriver.driver
        self.url = "http://127.0.0.1:9580/?"
        # self.driver.get(self.url)
    # 我的账户测试函数
    def Account(self):
        MyBlogDriver.getScreen()
        time.sleep(5)
        # 点击右上角用户头像
        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_nickname")
        # 查找用户头像
        self.driver.find_element(By.CSS_SELECTOR, "#settings_avatar")
        # 查找到邮箱输入框并修改邮箱
        self.driver.find_element(By.CSS_SELECTOR, "#setting_input_email").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#setting_input_email").send_keys("2495657683")
        self.driver.find_element(By.CSS_SELECTOR, "#setting_submit_email").click()
        # 查找电话输入框并修改
        self.driver.find_element(By.CSS_SELECTOR, "#setting_input_phoneNum").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#setting_input_phoneNum").send_keys("111111")
        time.sleep(2)
        self.driver.find_element(By.CSS_SELECTOR, "#setting_submit_phoneNum").click()
        time.sleep(5)
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        # 个人简介板块并修改
        self.driver.find_element(By.CSS_SELECTOR, "#settings_textarea_remark").send_keys("hello")
        time.sleep(2)
        # self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_remark").click()
        # 修改密码板块
        # 原密码输入框
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").send_keys("1234")
        # 新密码输入框
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").send_keys("123")
        # 确认密码输入框
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").send_keys("123")
        # 点击提交修改按钮
        time.sleep(2)
        self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()
        # 点击之后会跳转到登录页面
    # 我的贴子页面
    def MyPost(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 > a").click()
        # 点击我的贴子 并进入我的贴子页面
        self.driver.find_element(By.CSS_SELECTOR, "#index_user_profile").click()
        # 查找用户名
        self.driver.find_element(By.CSS_SELECTOR,"#profile_nickname")
        # 查找用户头像
        self.driver.find_element(By.CSS_SELECTOR,"#profile_avatar")
        # 查找用户发帖的数量
        text = 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)").text
        print(text)
        # 查找用户邮箱
        text1 = 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)").text
        print(text1)
        # 查找用户注册日期
        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,"#profile_article_body > li:nth-child(1) > div.card.timeline-event-card > div > div > div > div > div.text-truncate")
        # 查找用户的个人介绍
        self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-body > div > div > div.col-lg-4 > div > div > div > div")
from 论坛系统测试.TestCase import Login, List, MyDetail, Edit, MySign, UserCenter
from 论坛系统测试.common.Utils import MyBlogDriver
if __name__ == '__main__':
    #错误注册
    MySign.MySign().FailSign1()
    MySign.MySign().FailSign2()
    MySign.MySign().FailSign3()
    MySign.MySign().FailSign4()
    MySign.MySign().FailSign5()
    MySign.MySign().FailSign6()
    MySign.MySign().FailSign7()
    #正确注册
    MySign.MySign().SucSign()
    # 失败登录
    Login.MyLogin().Faillogin()
    # 正确登录
    Login.MyLogin().Suclogin()
    # 用户中心测试用例
    UserCenter.UserCenter().Account()
    # 重新登录
    Login.MyLogin().LogBackIn()
    # 论坛列表页测试用例
    List.List().SucList()
    # 论坛详情页测试用例
    MyDetail.MyDetail().SucDetail()
    # 论坛编辑页测试用例
    Edit.MyEdit().SearchEdit()
    Edit.MyEdit().SucEdit()
    # 用户中心测试用例
    UserCenter.UserCenter().MyPost()
    # 退出
    MyBlogDriver.driver.quit()

测试效果如下:

三、自动化测试的特点与亮点

自动化测试的优点有很多,包括:

  1. 提高测试效率:自动化测试可以快速执行测试用例,减少人工测试的时间和工作量,提高测试效率。

  2. 提高测试覆盖率:自动化测试可以运行大量的测试用例,覆盖更广泛的功能和场景,提高测试覆盖率。

  3. 减少人为错误:自动化测试减少了人为的测试错误,提高了测试的准确性和可靠性。

  4. 可重复性强:自动化测试可以重复执行相同的测试用例,确保测试结果的一致性。

  5. 节省成本:自动化测试可以减少人力资源成本和时间成本,提高测试效率,从而节省成本。

  6. 便于集成和持续集成:自动化测试可以轻松集成到持续集成环境中,实现自动化测试、构建和部署的无缝集成。

总的来说,自动化测试可以提高测试效率、准确性和可靠性,节省成本并支持持续集成,是软件开发过程中的重要组成部分。

4.完整测试代码连接

仓库存放测试相关用例和代码 gitee.com)

相关文章:

  • 网站建设交付网站查询信息
  • 网站怎么做英文版的爱站网综合查询
  • 网站建设毕业论文北京培训学校
  • 宿迁做网站优化seo视频教程汇总
  • wordpress老版seo诊断a5
  • 一个工厂做网站有什么好处找客源免费用哪个软件好
  • ARM向量表
  • Python使用“决策树”算法解决预测钻石成本的问题
  • Flink内存模型--flink1.19.1
  • 自定义一些C语言的字符串函数
  • Go语言基础:数据类型
  • Redis-07.Redis常用命令-集合操作命令
  • Python爬虫-爬取大麦网演出详情页面数据
  • 0330-YYYY-MM-DD格式日期比较大小
  • 【JavaScript】十二、定时器
  • SpringBoot 配置⽂件
  • 练习题:113
  • 从零开始:用Python搭建你的第一个机器学习模型
  • 划分型dp+倍率转换为后缀
  • VMware+Ubuntu+VScode+ROS一站式教学+常见问题解决
  • SpringBoot集成Log4j2终极指南:从基础配置到性能调优
  • 线性回归算法
  • YOLOv11模型的常见处理
  • qml语法解释
  • 课程分享 | 软件供应链安全的系统工程
  • MOS管阈值电压Vgs(th)与温度的关系:负温度系数探讨