论坛系统测试

目录

一、项目背景

二、测试计划

2.1 测试用例

2.2 执行测试用例

1、注册页面测试

2、登录页面测试

3、论坛首页测试

4、帖子详情页测试

5、帖子编辑页测试

6、“我的帖子”页测试

7、个人主页测试

8、私信回复测试

9、兼容性测试

10、安全性测试

三、自动化测试

3.1 测试工具

 3.2 创建驱动

3.3 注册页面

3.4 登录页面

3.5 首页

3.6 帖子详情页面

3.7 帖子编辑页面

3.8 “我的帖子”页面

3.9 “个人中心”页面

3.10 私信回复功能

3.11 创建启动文件

四、项目BUG

五、项目总结

六、测试脚本代码链接


一、项目背景

 本次测试的项目是一个“论坛系统”web网站,该论坛系统可以实现发布帖子,记录帖子的发布时间、内容等信息,同时能够对帖子进行分类管理,方便用户管理与查看不同分类的帖子,同时用户可查看本人以及其他人发布的帖子,同时能够在帖子下方进行点赞评论回复。本次测对论坛系统进行测试,测试核心内容包括登录、注册、编辑、查看、兼容性及安全性等测试内容。

二、测试计划

2.1 测试用例

本次测试主要对论坛系统进行功能测试、界面测试、兼容性测试、易用性测试、安全性测试;由于设备限制,无法进行性能测试。同时使用selenium编写自动化脚本对论坛系统进行自动化测试。

 测试用例如下:

 

2.2 执行测试用例

1、注册页面测试

(1)介绍

 注册信息包括用户名、昵称、密码以及确认密码,同时需要同意协议,完成以上所有步骤才能注册成功。 

(2)测试用例展示

 测试用例1:输入正确的用户名、昵称、密码


预计结果:成功注册,跳转到登录页,成功登录

实际结果:成功注册,跳转到登录页,成功登录

测试用例2:仅用户名为空


预计结果:提示用户名不能为空

实际结果:提示用户名不能为空

测试用例3:仅昵称为空


预计结果:提示昵称不能为空

实际结果:提示昵称不能为空

测试用例4:仅密码为空


预计结果:提示密码不能为空

实际结果:提示密码不能为空

测试用例5:仅确认密码为空


预计结果:提示请检查确认密码

实际结果:提示请检查确认密码

测试用例6:全部为空


预计结果:全部提示

实际结果:全部提示

测试用例7:确认密码与首次填写密码不一致


预计结果:提示请检查确认密码

实际结果:提示请检查确认密码

测试用例8:用户名重复注册


预计结果:提示用户已存在

实际结果:提示用户已存在

测试用例9:昵称重复注册


预计结果:提示昵称已存在

实际结果:成功注册 

测试用例10:不勾选协议

预计结果:标红选项

实际结果:标红选项

测试用例11:点击协议


预计结果:出现协议详细内容

实际结果:未出现协议详细内容 

测试用例12:点击登录


预计结果:跳转至登录页面

实际结果:跳转至登录页面 

2、登录页面测试

(1)介绍

正确输入用户名和密码跳转至论坛首页

(2)测试用例展示

 测试用例1:输入正确的用户名和密码


预计结果:正常登录

实际结果:正常登录

 测试用例2:用户名为空,输入正确的密码


预计结果:提示用户名不能为空

实际结果:提示用户名不能为空

测试用例3:密码为空,输入正确的用户名


预计结果:提示密码不能为空

实际结果:提示密码不能为空

测试用例4:用户名为空,密码为空


预计结果:提示用户名和密码不能为空

实际结果:提示用户名和密码不能为空

测试用例5:输入正确的用户名,错误的密码


预计结果:提示用户名或密码错误

实际结果:提示用户名或密码错误

测试用例6:输入错误的用户名,正确的密码


预计结果:提示用户名或密码错误

实际结果:提示用户名或密码错误

测试用例7:输入错误的用户名,错误的密码


预计结果:提示用户名或密码错误

实际结果:提示用户名或密码错误

测试用例8:点击注册


预计结果:跳转至注册页面

实际结果:跳转至注册页面

3、论坛首页测试

(1)介绍

论坛首页可以查看用户发布的帖子,各种分类以及用户信息,同时具有查询功能。

(2)测试用例展示

测试用例1:未登录状态下进入首页


预计结果:跳转至登录页面

实际结果:未跳转至登录页面

测试用例2:页面信息


预计结果:正常显示

实际结果:正常显示

测试用例3:查看各个板块


预计结果:板块正常跳转,帖子列表,数量显示正确

实际结果:板块正常跳转,帖子列表,数量显示正确

测试用例4:搜索


预计结果:成功搜索相关内容

实际结果:未搜索相关内容

测试用例5:切换夜晚模式


预计结果:成功切换至夜晚模式

实际结果:成功切换至夜晚模式

测试用例6:切换白天模式


预计结果:成功切换至白天模式

实际结果:成功切换至白天模式

测试用例7:点击信息


预计结果:出现已收到信息

实际结果:出现已收到信息

测试用例8:点击用户信息


预计结果:出现“我的帖子”、“个人中心”、“退出”选项

实际结果:出现“我的帖子”、“个人中心”、“退出”选项

4、帖子详情页测试

(1)介绍

 在首页点击任意帖子标题进入该帖子的详情页面,其记录了帖子的标题、内容、作者信息等内容,还可对帖子进行回复。如果是当前用户所发布的帖子,则可对帖子进行修改删除,如果是其他用户的帖子则可以对作者发送私信,并对该帖子只有“只读”权限。

(2) 测试用例展示

测试用例1:点击作者昵称


预计结果:跳转至跳转至改用户“我的帖子”页

实际结果:跳转至跳转至改用户“我的帖子”页

测试用例2:点赞


预计结果:单击点赞,点赞数加1,再次点击取消,点赞数减1

实际结果:再次点击不能取消

测试用例3:点击编辑


预计结果:进入帖子修改页面

实际结果:进入帖子修改页面

测试用例4:取消删除


预计结果:弹窗消除,帖子未被删除,相关数量显示不变

实际结果:弹窗消除,帖子未被删除,相关数量显示不变

测试用例5:确认删除


预计结果:回到首页,帖子被删除,相关数量显示减1

实际结果:回到首页,帖子被删除,相关数量显示减1

测试用例6:发布回复


预计结果:显示回复内容,回复编辑区清空,评论数加1

实际结果:显示回复内容,回复编辑区未清空,评论数加1

测试用例7:在其他用户帖子下是否只有“只读”权限


预计结果:只有“只读”权限

实际结果:只有“只读”权限

测试用例8:取消发私信


预计结果:私信弹窗消失

实际结果:私信弹窗消失

测试用例9:内容为空发送私信


预计结果:发送失败,提示输入内容

实际结果:发送失败,提示输入内容

测试用例10:内容不为空发送私信


预计结果:发送成功

实际结果:发送成功

5、帖子编辑页测试

(1)介绍

帖子编辑页分为新增帖子和修改帖子,新增帖子发布新的帖子内容,修改帖子修改已有帖子内容。 

(2)测试用例展示

测试用例1:选择“java”板块发布帖子


预计结果:发布成功,首页与“java”板块显示该帖子

实际结果:发布成功,首页与“java”板块显示该帖子

测试用例2:选择“c++”板块发布帖子


预计结果:发布成功,首页与“c++”板块显示该帖子

实际结果:发布成功,首页与“c++”板块显示该帖子

测试用例3:不填写标题


预计结果:提示输入标题

实际结果:提示输入标题

测试用例4:不填写内容


预计结果:提示输入内容

实际结果:提示输入内容

测试用例5:不填写标题和内容


预计结果:提示输入标题

实际结果:提示输入标题

测试用例6:标题修改为“修改帖子测试”


预计结果:跳转到首页,提示修改成功,标题修改,内容不变

实际结果:跳转到首页,提示修改成功,标题修改,内容不变

测试用例7:内容修改为“修改帖子内容测试”


预计结果:跳转到首页,提示修改成功,内容修改,标题不变

实际结果:跳转到首页,提示修改成功,内容修改,标题不变

测试用例8:标题与内容都修改为“修改帖子标题和内容”


预计结果:跳转到首页,提示修改成功,标题和内容都修改

实际结果:跳转到首页,提示修改成功,标题和内容都修改

测试用例9:标题与内容都不修改


预计结果:跳转到首页,提示修改成功,标题和内容都不修改

实际结果:跳转到首页,提示修改成功,标题和内容都不修改

测试用例10:修改标题为空


预计结果:提示标题不能为空

实际结果:提示标题不能为空

测试用例11:修改内容为空


预计结果:提示内容不能为空

实际结果:提示内容不能为空

测试用例12:修改标题和内容为空


预计结果:提示标题不能为空

实际结果:提示标题不能为空

6、“我的帖子”页测试

(1)介绍

“我的帖子”页由右上角用户信息点击进入,也可以由帖子详情页点击作者昵称进入,该页面统计了用户发布的帖子,以及各帖子的信息,能够方便用户管理。 

(2)测试用例展示 

测试用例1:检测当前用户显示信息


预计结果:没有异常

实际结果:发帖数与实际数不匹配,其他显示正常

测试用例2:检测其他用户显示信息


预计结果:没有异常

实际结果:没有异常

测试用例3:取消发私信


预计结果:私信弹窗消失

实际结果:私信弹窗消失

测试用例4:内容为空发送私信


预计结果:发送失败,提示输入内容

实际结果:发送失败,提示输入内容

7、个人主页测试

(1)介绍

 通过点击右上角用户信息“个人中心”进入,该页面可以修改用户个人信息。

(2)测试用例展示

测试用例1:修改头像


预计结果:修改成功,各个页面显示正常

实际结果:修改失败,且没有提示

测试用例2:修改昵称为空


预计结果:提示修改失败

实际结果:未提示修改失败

测试用例3:修改昵称为:张三


预计结果:提示修改成功,各个页面显示正常

实际结果:提示修改成功,各个页面显示正常

测试用例4:修改邮箱地址为:邮箱地址


预计结果:提示修改成功,各个页面显示正常

实际结果:提示修改成功,各个页面显示正常

测试用例5:修改电话号码为:123456789


预计结果:提示修改成功

实际结果:提示修改成功

测试用例6:正常填写原密码与新密码


预计结果:跳转到登录页面,重新登录

实际结果:跳转到登录页面,重新登录

测试用例7:原密码为空


预计结果:提示输入原密码

实际结果:提示输入原密码,提示不明显

测试用例8:新原密码为空


预计结果:提示输入新原密码

实际结果:提示输入新原密码,提示不明显

测试用例9:确认密码为空


预计结果:提示输入确认密码

实际结果:提示输入确认密码,提示不明显

测试用例10:全部为空


预计结果:提示输入原密码

实际结果:提示输入原密码,提示不明显

测试用例11:原密码错误填写


预计结果:提示原密码填写错误

实际结果:提示内容不明确

测试用例12:确认密码与新原密码填写不一致


预计结果:提示两次密码不一致

实际结果:提示两次密码不一致

测试用例13:原密码与新密码一致


预计结果:提示新密码不能与原密码一致

实际结果:修改成功,跳转到登录页面

8、私信回复测试

 测试用例1:查看来信


预计结果:出现信息详情弹窗

实际结果:出现信息详情弹窗

 测试用例2:点击回复


预计结果:出现私信弹窗

实际结果:出现私信弹窗

9、兼容性测试

测试用例:分别在谷歌游览器、联想游览器、Edge游览器下进入个人博客系统

预期结果:三个游览器下无区别

Google:

联想游览器:

Edge:

实际结果:三个游览器下无区别

10、安全性测试

未显示密码 

三、自动化测试

3.1 测试工具

系统: windows11

浏览器:Microsoft Edge版本 136.0.3240.50 (正式版本) (64 位)

语言:python

模块:selenium4.0

软件: pyCharm2025.1  

 3.2 创建驱动

 Utils.py

import datetime
import os
import sys
from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.edge.service import Service
from webdriver_manager.microsoft import EdgeChromiumDriverManager


class Driver:
    #定义构造函数
    #声明变量
    driver = ""
    def __init__(self):
        options = Options()
        self.driver = webdriver.Edge(service = Service(EdgeChromiumDriverManager().install()),options = options)
        #创建隐式等待
        self.driver.implicitly_wait(10)

    # 创建屏幕截图
    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()

3.3 注册页面

 ForumRegister.py

import datetime

from selenium.webdriver.common.by import By

from common.Utils import ForumDriver

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

    #用户名为空
    def Registerfailtest1(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, "#policy").click()
        # 填写昵称
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("cc")
        # 填写密码
        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, "#submit").click()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        # 判断是否有提示
        tip = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(2) > div").text
        assert tip == "用户名不能为空"


    # 昵称为空
    def Registerfailtest2(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, "#policy").click()
        # 填写用户名
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("cc")
        # 填写密码
        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, "#submit").click()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        # 判断是否有提示
        tip = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(3) > div").text
        assert tip == "昵称不能为空"


    # 密码为空
    def Registerfailtest3(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, "#policy").click()
        # 填写用户名
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("cc")
        # 填写昵称
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("123456")
        # 填写确认密码
        self.driver.find_element(By.CSS_SELECTOR, "#passwordRepeat").send_keys("123456")
        # 点击注册
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        # 判断是否有提示
        tip = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(4) > div > div").text
        assert tip == "密码不能为空"


    # 确认密码为空
    def Registerfailtest4(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, "#policy").click()
        # 填写用户名
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("cc")
        # 填写昵称
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("cc")
        # 填写密码
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        # 点击注册
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        # 判断是否有提示
        tip = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(5) > div > div").text
        assert tip == "请检查确认密码"


    # 全部为空
    def Registerfailtest5(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, "#policy").click()
        # 点击注册
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        # 判断是否有提示
        tip = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(2) > div").text
        assert tip == "用户名不能为空"
        tip = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(3) > div").text
        assert tip == "昵称不能为空"
        tip = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(4) > div > div").text
        assert tip == "密码不能为空"
        tip = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(5) > div > div").text
        assert tip == "请检查确认密码"

    #确认密码与首次填写密码不一致
    def Registerfailtest6(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, "#policy").click()
        # 填写用户名
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("cc")
        # 填写昵称
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("cc")
        # 填写密码
        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, "#submit").click()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        # 判断是否有提示
        tip = self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(5) > div > div").text
        assert tip == "请检查确认密码"

    #用户名重复
    def Registerfailtest7(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, "#policy").click()
        # 填写用户名
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhangsan")
        # 填写昵称
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("cc")
        # 填写密码
        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, "#submit").click()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        # 判断是否有提示
        tip = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
        assert "用户已存在" in tip

    #昵称重复
    def Registerfailtest8(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, "#policy").click()
        # 填写用户名
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys(datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S"))
        # 填写昵称
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys("zhangsan")
        # 填写密码
        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, "#submit").click()
        # 判断是否有提示
        try:
            tip = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div")
            assert "昵称已存在" in tip
        except:
            print("无昵称已存在提示")
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()

    #不勾选协议
    def Registerfailtest9(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(datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S"))
        # 填写昵称
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys(datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S"))
        # 填写密码
        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, "#submit").click()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        # 判断是否有提示
        element = self.driver.find_element("css selector", "#signUpForm > div > div:nth-child(6) > label > span")
        tip_color = self.driver.execute_script("return window.getComputedStyle(arguments[0]).getPropertyValue('color');",element)
        assert "rgb" in tip_color

    #成功注册
    def RegisterSuc(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, "#policy").click()
        # 填写用户名
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys(datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S"))
        # 填写昵称
        self.driver.find_element(By.CSS_SELECTOR, "#nickname").send_keys(datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S"))
        # 填写密码
        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, "#submit").click()
        #判断是否跳转到登录界面
        text = self.driver.find_element(By.CSS_SELECTOR, "body > div > div > div > div:nth-child(1) > div > div.card.card-md > div > h2").text
        assert "用户登录" == text

    #其他元素检测
    def RrgisterOthElement(self):
        #点击协议
        self.driver.find_element(By.CSS_SELECTOR, "#signUpForm > div > div:nth-child(6) > label > span > a").click()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        #点击登录
        self.driver.find_element(By.CSS_SELECTOR, "body > div > div > div.text-center.text-muted.mt-3 > a").click()
        #判断是否跳转至登录页面
        text = self.driver.find_element(By.CSS_SELECTOR, "body > div > div > div > div:nth-child(1) > div > div.card.card-md > div > h2").text
        if text:
            assert "用户登录" == text
        else:
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()

3.4 登录页面

 ForumLogin.py

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

class ForumLgin:
    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 LoginSucLgin(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()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        #判断是否跳转至首页
        text = self.driver.find_element(By.CSS_SELECTOR, "#nav_board_index > a > span.nav-link-title").text
        assert "首页" == text

    # 正常登录
    def LoginSucLgin2(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("lisi")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        # 点击登录
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        # 判断是否跳转至首页
        text = self.driver.find_element(By.CSS_SELECTOR, "#nav_board_index > a > span.nav-link-title").text
        assert "首页" == text

    #异常登录
    #用户名为空
    def LoginfailTest1(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, "#password").send_keys("123456")
        # 点击登录
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        # 判断是否有提示
        tip = self.driver.find_element(By.CSS_SELECTOR, "#signInForm > div.mb-3 > div").text
        assert tip == "用户名不能为空"

    # 用户名为空
    def LoginfailTest2(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, "#submit").click()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        # 判断是否有提示
        tip = self.driver.find_element(By.CSS_SELECTOR, "#signInForm > div.mb-2 > div > div").text
        assert tip == "密码不能为空"

    # 用户名和密码为空
    def LoginfailTest3(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, "#submit").click()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        # 判断是否有提示
        tip = self.driver.find_element(By.CSS_SELECTOR, "#signInForm > div.mb-2 > div > div").text
        assert tip == "密码不能为空"
        tip = self.driver.find_element(By.CSS_SELECTOR, "#signInForm > div.mb-2 > div > div").text
        assert tip == "密码不能为空"

    #用户名正确,密码错误
    def LoginfailTest4(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("123")
        # 点击登录
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        # 判断是否有提示
        tip = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
        assert "用户名或密码错误" in tip

    # 用户名错误,密码正确
    def LoginfailTest5(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("cc")
        # 输入正确的密码
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        # 点击登录
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        # 判断是否有提示
        tip = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
        assert "用户名或密码错误" in tip

    # 用户名错误,密码错误
    def LoginfailTest6(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("cc")
        # 输入错误的密码
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")
        # 点击登录
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        # 判断是否有提示
        tip = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
        assert "用户名或密码错误" in tip

    # 其他元素检测
    def LoginOthElement(self):
        # 点击注册
        self.driver.find_element(By.CSS_SELECTOR, "body > div > div > div > div:nth-child(1) > div > div.text-center.text-muted.mt-3 > a").click()
        # 判断是否跳转至注册页面
        text = self.driver.find_element(By.CSS_SELECTOR,"#signUpForm > div > h2").text
        if text:
            assert "用户注册" == text
        else:
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()

3.5 首页

 ForumHpage.py

import re
import time

from selenium.webdriver import Keys
from selenium.webdriver.common.by import By
from common.Utils import ForumDriver

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

    #检测板块是否正常
    def HpageSector(self):
        #Java
        self.driver.find_element(By.CSS_SELECTOR, "#topBoardList > li:nth-child(2) > a > span.nav-link-title").click()
        #检测是否正常
        text = self.driver.find_element(By.CSS_SELECTOR, "#article_list_board_title").text
        assert "Java" == text
        match = re.search(r'\d+', self.driver.find_element(By.CSS_SELECTOR, "#article_list_count_board").text)
        if match:
            num = int(match.group(0))  # 直接转换为整数
        titlenum = len(self.driver.find_elements(By.CSS_SELECTOR, "#artical-items-body > div > div.row > div.col > div.text-truncate"))
        if num != titlenum :
            print("Java板块文章数错误")
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()

        #C++
        text = self.driver.find_element(By.CSS_SELECTOR, "#topBoardList > li:nth-child(3)").click()
        # 检测是否正常
        text = self.driver.find_element(By.CSS_SELECTOR, "#article_list_board_title").text
        assert "C++" == text
        match = re.search(r'\d+', self.driver.find_element(By.CSS_SELECTOR, "#article_list_count_board").text)
        if match:
            num = int(match.group(0))  # 直接转换为整数
        titlenum = len(self.driver.find_elements(By.CSS_SELECTOR,"#artical-items-body > div > div.row > div.col > div.text-truncate"))
        if num != titlenum:
            print("C++板块文章数错误")
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()

        # 前端技术
        self.driver.find_element(By.CSS_SELECTOR,"#topBoardList > li:nth-child(4) > a > span.nav-link-title").click()
        # 检测是否正常
        text = self.driver.find_element(By.CSS_SELECTOR, "#article_list_board_title").text
        assert "前端技术" == text
        match = re.search(r'\d+', self.driver.find_element(By.CSS_SELECTOR, "#article_list_count_board").text)
        if match:
            num = int(match.group(0))
        titlenum = len(self.driver.find_elements(By.CSS_SELECTOR,"#artical-items-body > div > div.row > div.col > div.text-truncate"))
        if num != titlenum:
            print("前端技术板块文章数错误")
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()

        # MySQL
        self.driver.find_element(By.CSS_SELECTOR,"#topBoardList > li:nth-child(5) > a").click()
        # 检测是否正常
        text = self.driver.find_element(By.CSS_SELECTOR, "#article_list_board_title").text
        assert "MySQL" == text
        match = re.search(r'\d+', self.driver.find_element(By.CSS_SELECTOR, "#article_list_count_board").text)
        if match:
            num = int(match.group(0))
        titlenum = len(self.driver.find_elements(By.CSS_SELECTOR,"#artical-items-body > div > div.row > div.col > div.text-truncate"))
        if num != titlenum:
            print("MySQL板块文章数错误")
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()

        # 面试宝典
        self.driver.find_element(By.CSS_SELECTOR, "#topBoardList > li:nth-child(6)").click()
        # 检测是否正常
        text = self.driver.find_element(By.CSS_SELECTOR, "#article_list_board_title").text
        assert "面试宝典" == text
        match = re.search(r'\d+', self.driver.find_element(By.CSS_SELECTOR, "#article_list_count_board").text)
        if match:
            num = int(match.group(0))
        titlenum = len(self.driver.find_elements(By.CSS_SELECTOR,"#artical-items-body > div > div.row > div.col > div.text-truncate"))
        if num != titlenum:
            print("面试宝典板块文章数错误")
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()

        # 经验分享
        self.driver.find_element(By.CSS_SELECTOR, "#topBoardList > li:nth-child(7)").click()
        time.sleep(0.4)
        # 检测是否正常
        text = self.driver.find_element(By.CSS_SELECTOR, "#article_list_board_title").text
        assert "经验分享" == text
        match = re.search(r'\d+', self.driver.find_element(By.CSS_SELECTOR, "#article_list_count_board").text)
        if match:
            num = int(match.group(0))
        titlenum = len(self.driver.find_elements(By.CSS_SELECTOR,"#artical-items-body > div > div.row > div.col > div.text-truncate"))
        if num != titlenum:
            print("经验分享板块文章数错误")
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()

        # 招聘信息
        self.driver.find_element(By.CSS_SELECTOR, "#topBoardList > li:nth-child(8)").click()
        # 检测是否正常
        text = self.driver.find_element(By.CSS_SELECTOR, "#article_list_board_title").text
        assert "招聘信息" == text
        match = re.search(r'\d+', self.driver.find_element(By.CSS_SELECTOR, "#article_list_count_board").text)
        if match:
            num = int(match.group(0))
        titlenum = len(self.driver.find_elements(By.CSS_SELECTOR,"#artical-items-body > div > div.row > div.col > div.text-truncate"))
        if num != titlenum:
            print("招聘信息板块文章数错误")
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()

        # 福利待遇
        self.driver.find_element(By.CSS_SELECTOR, "#topBoardList > li:nth-child(9)").click()
        # 检测是否正常
        text = self.driver.find_element(By.CSS_SELECTOR, "#article_list_board_title").text
        assert "福利待遇" == text
        match = re.search(r'\d+', self.driver.find_element(By.CSS_SELECTOR, "#article_list_count_board").text)
        if match:
            num = int(match.group(0))
        titlenum = len(self.driver.find_elements(By.CSS_SELECTOR,"#artical-items-body > div > div.row > div.col > div.text-truncate"))
        if num != titlenum:
            print("福利待遇板块文章数错误")
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()

        # 灌水区
        self.driver.find_element(By.CSS_SELECTOR, "#topBoardList > li:nth-child(10)").click()
        # 检测是否正常
        time.sleep(0.4)
        text = self.driver.find_element(By.CSS_SELECTOR, "#article_list_board_title").text
        assert "灌水区" == text
        match = re.search(r'\d+', self.driver.find_element(By.CSS_SELECTOR, "#article_list_count_board").text)
        if match:
            num = int(match.group(0))
        titlenum = len(self.driver.find_elements(By.CSS_SELECTOR,"#artical-items-body > div > div.row > div.col > div.text-truncate"))
        if num != titlenum:
            print("灌水区板块文章数错误")
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()

    #检测用户信息
    def HpageInfo(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()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        #检测是否正确
        text = self.driver.find_element(By.CSS_SELECTOR, "#index_user_profile").text
        assert "我的帖子" == text
        text = self.driver.find_element(By.CSS_SELECTOR, "#index_user_settings").text
        assert "个人中心" == text
        text = self.driver.find_element(By.CSS_SELECTOR, "#index_user_logout > span").text
        assert "退出" == text

    #检测帖子是否跳转
    def HpagePost(self):
        num1 = 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-auto.d-none.d-md-inline > ul > li:nth-child(1)").text
        #点击帖子标题
        self.driver.find_element(By.CSS_SELECTOR, "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        #判断游览数是否增加
        num2 = self.driver.find_element(By.CSS_SELECTOR, "#details_article_visitCount").text
        assert int(num1) == int(num2)-1
        text = self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-body > div > div > div:nth-child(2) > h3").text
        assert "最新回复" == text

    #其他元素检测
    def HpageOthElement(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.d-none.d-md-flex.me-3 > div > form > div > input").send_keys("Java")
        # 点击回车
        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(Keys.ENTER)
        # 添加一个屏幕截图查看是否成功
        ForumDriver.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) > a.nav-link.px-0.hide-theme-dark").click()
        #获取页面颜色
        color = self.driver.find_element(By.CSS_SELECTOR, "#page-wrapper").value_of_css_property("color")
        assert "248, 250, 252, 1" in color
        # 切换白天模式
        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").click()
        # 获取页面颜色
        color = self.driver.find_element(By.CSS_SELECTOR, "#page-wrapper").value_of_css_property("color")
        assert "29, 39, 59, 1" in color

        #检测信息
        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()
        time.sleep(1)
        text = self.driver.find_element(By.CSS_SELECTOR, "#offcanvasEndLabel").text
        assert "所有站内信" == text

    #未登录状态下
    def HpageNLogin(self):
        # 判断是否跳转到登录界面
        try:
            text = self.driver.find_element(By.CSS_SELECTOR,"body > div > div > div > div:nth-child(1) > div > div.card.card-md > div > h2").text
            assert "用户登录" == text
        except:
            print("Hpage未跳转至登录页面")

3.6 帖子详情页面

 ForumDetails.py

import re
import time

from selenium.webdriver import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from tests import ForumLogin

from common.Utils import ForumDriver

class ForumDetails:
    url = ""
    driver = ""
    Author = ""
    def __init__(self):
        self.url = "http://127.0.0.1:58080/index.html"
        self.driver = ForumDriver.driver
        self.driver.get(self.url)
        try:
            self.Author = 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)").text
            self.driver.find_element(By.CSS_SELECTOR, "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a").click()
        except:
            print("没有帖子")

    #检测帖子信息
    def DetailsInfo(self):
        text = self.driver.find_element(By.CSS_SELECTOR, "#article_details_author_name").text
        assert text == self.Author
        #点击跳转至改用户“我的帖子”页
        self.driver.find_element(By.CSS_SELECTOR, "#article_details_author_name").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-body > div > div > div.col-lg-4 > div > div > div > div > h2").text
        assert text == "个人介绍"
        try:
            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()
        except:
            print("没有帖子")
        #查看点赞
        num1 = self.driver.find_element(By.CSS_SELECTOR, "#details_article_likeCount").text
        self.driver.find_element(By.CSS_SELECTOR, "#details_btn_like_count").click()
        num2 = self.driver.find_element(By.CSS_SELECTOR, "#details_article_likeCount").text
        assert int(num1) == int(num2)-1

        #再次点击取消
        num1 = self.driver.find_element(By.CSS_SELECTOR, "#details_article_likeCount").text
        self.driver.find_element(By.CSS_SELECTOR, "#details_btn_like_count").click()
        num2 = self.driver.find_element(By.CSS_SELECTOR, "#details_article_likeCount").text
        if int(num1) != int(num2) + 1:
            print("无法取消点赞")

        #点击编辑
        self.driver.find_element(By.CSS_SELECTOR, "#details_artile_edit").click()
        time.sleep(0.4)
        text = self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-header.d-print-none > div > div > div > h2").text
        assert text == "编辑"

        #删除
        self.driver.find_element(By.CSS_SELECTOR, "#nav_board_index").click()
        self.driver.find_element(By.CSS_SELECTOR,"#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
        time.sleep(3)
        self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-body > div > div > div:nth-child(1) > div.col-9.card.card-lg > div.card-footer.bg-transparent.mt-auto.justify-content-end > div > div:nth-child(3) > div > a").click()
        time.sleep(3)
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        #点击取消
        self.driver.find_element(By.CSS_SELECTOR, "#details_delete_modal > div > div > div.modal-footer > div > div > div:nth-child(1) > a").click()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        #点击删除
        self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-body > div > div > div:nth-child(1) > div.col-9.card.card-lg > div.card-footer.bg-transparent.mt-auto.justify-content-end > div > div:nth-child(3) > div > a").click()
        self.driver.find_element(By.CSS_SELECTOR, "#details_artile_delete").click()
        time.sleep(3)
        text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
        assert "删除成功" in text

    #回复模块
    def DetailsReply(self):
        try:
            self.driver.find_element(By.CSS_SELECTOR, "#details_reply_area > div > div.col-3.card > div > h3 > a").click()
            text = self.driver.find_element(By.CSS_SELECTOR,"#bit-forum-content > div.page-body > div > div > div.col-lg-4 > div > div > div > div > h2").text
            assert text == "个人介绍"
            try:
                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()
                num1 = self.driver.find_element(By.CSS_SELECTOR, "#details_article_replyCount").text
                self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
                # WebDriverWait(self.driver, 10).until()
                time.sleep(1)
                # 清空输入框
                self.driver.find_element(By.CSS_SELECTOR,
                                         "#article_details_reply > div.editormd-toolbar > div > ul > li:nth-child(39) > a > i").click()
                # 点击回复
                self.driver.find_element(By.CSS_SELECTOR, "#details_btn_article_reply").click()
                text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
                assert "请输入回复内容" in text
                time.sleep(0.2)
                self.driver.find_element(By.CSS_SELECTOR,
                                         "#article_details_reply > div.editormd-toolbar > div > ul > li:nth-child(6) > a > i").click()
                time.sleep(0.4)
                self.driver.find_element(By.CSS_SELECTOR, "#details_btn_article_reply").click()
                text = self.driver.find_element(By.CSS_SELECTOR,
                                                "body > div.jq-toast-wrap.bottom-right > div:nth-child(2)").text
                assert "回复成功" in text
                # 检测输入框是否被清空
                text = self.driver.find_element(By.CSS_SELECTOR,
                                                "#article_details_reply > div.CodeMirror.cm-s-default.CodeMirror-wrap > div.CodeMirror-scroll > div.CodeMirror-sizer > div > div > div > div.CodeMirror-code > div > pre > span > span").text
                if "" != text:
                    print("输入框未清空")
                # 定位页面顶部的元素
                top_element = self.driver.find_element(By.CSS_SELECTOR,
                                                       "body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > h1 > a")
                # 滚动到该元素
                self.driver.execute_script("arguments[0].scrollIntoView();", top_element)
                text = self.driver.find_element(By.CSS_SELECTOR,
                                                "#details_reply_area > div.row > div.col-9 >div.card-body").text
                assert text == "**"
                num2 = self.driver.find_element(By.CSS_SELECTOR, "#details_article_replyCount").text
                assert int(num1) == int(num2) - 1
            except:
                print("没有帖子")
        except:
            text = self.driver.find_element(By.CSS_SELECTOR, "#details_reply_area > p").text
            assert text == "还没有回复,第一个写下回复吧"
            num1 = self.driver.find_element(By.CSS_SELECTOR, "#details_article_replyCount").text
            self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
            time.sleep(1)
            # WebDriverWait(self.driver, 10).until()
            self.driver.find_element(By.CSS_SELECTOR,"#details_btn_article_reply").click()
            text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
            assert "请输入回复内容" in text
            time.sleep(0.3)
            self.driver.find_element(By.CSS_SELECTOR,
                                     "#article_details_reply > div.editormd-toolbar > div > ul > li:nth-child(6) > a > i").click()
            time.sleep(0.3)
            self.driver.find_element(By.CSS_SELECTOR, "#details_btn_article_reply").click()
            text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div:nth-child(2)").text
            assert "回复成功" in text
            # 检测输入框是否被清空
            text = self.driver.find_element(By.CSS_SELECTOR,
                                            "#article_details_reply > div.CodeMirror.cm-s-default.CodeMirror-wrap > div.CodeMirror-scroll > div.CodeMirror-sizer > div > div > div > div.CodeMirror-code > div > pre > span > span").text
            if "" != text:
                print("输入框未清空")
            # 定位页面顶部的元素
            top_element = self.driver.find_element(By.CSS_SELECTOR,
                                                   "body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > h1 > a")
            # 滚动到该元素
            self.driver.execute_script("arguments[0].scrollIntoView();", top_element)
            text = self.driver.find_element(By.CSS_SELECTOR, "#details_reply_area > div.row > div.col-9 >div.card-body").text
            assert text == "**"
            num2 = self.driver.find_element(By.CSS_SELECTOR, "#details_article_replyCount").text
            assert int(num1) == int(num2) - 1


    # 检测板块是否正常
    def DetailsSector(self):
        # Java
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#topBoardList > li:nth-child(2) > a > span.nav-link-title").click()
        # 检测是否正常
        text = self.driver.find_element(By.CSS_SELECTOR, "#article_list_board_title").text
        assert "Java" == text
        match = re.search(r'\d+', self.driver.find_element(By.CSS_SELECTOR, "#article_list_count_board").text)
        if match:
            num = int(match.group(0))  # 直接转换为整数
        titlenum = len(self.driver.find_elements(By.CSS_SELECTOR,
                                                 "#artical-items-body > div > div.row > div.col > div.text-truncate"))
        if num != titlenum:
            print("Java板块文章数错误")
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()
        #回到详情页
        self.driver.get(self.url)
        time.sleep(0.4)
        try:
            self.driver.find_element(By.CSS_SELECTOR,
                                     "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
        except:
            print("没有帖子")

        # C++
        text = self.driver.find_element(By.CSS_SELECTOR, "#topBoardList > li:nth-child(3)").click()
        # 检测是否正常
        text = self.driver.find_element(By.CSS_SELECTOR, "#article_list_board_title").text
        assert "C++" == text
        match = re.search(r'\d+', self.driver.find_element(By.CSS_SELECTOR, "#article_list_count_board").text)
        if match:
            num = int(match.group(0))  # 直接转换为整数
        titlenum = len(self.driver.find_elements(By.CSS_SELECTOR,
                                                 "#artical-items-body > div > div.row > div.col > div.text-truncate"))
        if num != titlenum:
            print("C++板块文章数错误")
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()
            # 回到详情页
            self.driver.get(self.url)
            time.sleep(0.4)
            try:
                self.driver.find_element(By.CSS_SELECTOR,
                                         "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
            except:
                print("没有帖子")

        # 前端技术
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#topBoardList > li:nth-child(4) > a > span.nav-link-title").click()
        # 检测是否正常
        text = self.driver.find_element(By.CSS_SELECTOR, "#article_list_board_title").text
        assert "前端技术" == text
        match = re.search(r'\d+', self.driver.find_element(By.CSS_SELECTOR, "#article_list_count_board").text)
        if match:
            num = int(match.group(0))
        titlenum = len(self.driver.find_elements(By.CSS_SELECTOR,
                                                 "#artical-items-body > div > div.row > div.col > div.text-truncate"))
        if num != titlenum:
            print("前端技术板块文章数错误")
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()
        # 回到详情页
        self.driver.get(self.url)
        time.sleep(0.4)
        try:
            self.driver.find_element(By.CSS_SELECTOR,
                                     "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
        except:
            print("没有帖子")

        # MySQL
        self.driver.find_element(By.CSS_SELECTOR, "#topBoardList > li:nth-child(5) > a").click()
        # 检测是否正常
        text = self.driver.find_element(By.CSS_SELECTOR, "#article_list_board_title").text
        assert "MySQL" == text
        match = re.search(r'\d+', self.driver.find_element(By.CSS_SELECTOR, "#article_list_count_board").text)
        if match:
            num = int(match.group(0))
        titlenum = len(self.driver.find_elements(By.CSS_SELECTOR,
                                                 "#artical-items-body > div > div.row > div.col > div.text-truncate"))
        if num != titlenum:
            print("MySQL板块文章数错误")
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()
        # 回到详情页
        self.driver.get(self.url)
        time.sleep(0.4)
        try:
            self.driver.find_element(By.CSS_SELECTOR,
                                     "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
        except:
            print("没有帖子")

        # 面试宝典
        self.driver.find_element(By.CSS_SELECTOR, "#topBoardList > li:nth-child(6)").click()
        # 检测是否正常
        text = self.driver.find_element(By.CSS_SELECTOR, "#article_list_board_title").text
        assert "面试宝典" == text
        match = re.search(r'\d+', self.driver.find_element(By.CSS_SELECTOR, "#article_list_count_board").text)
        if match:
            num = int(match.group(0))
        titlenum = len(self.driver.find_elements(By.CSS_SELECTOR,
                                                 "#artical-items-body > div > div.row > div.col > div.text-truncate"))
        if num != titlenum:
            print("面试宝典板块文章数错误")
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()
        # 回到详情页
        self.driver.get(self.url)
        time.sleep(0.4)
        try:
            self.driver.find_element(By.CSS_SELECTOR,
                                     "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
        except:
            print("没有帖子")

        # 经验分享
        self.driver.find_element(By.CSS_SELECTOR, "#topBoardList > li:nth-child(7)").click()
        # 检测是否正常
        text = self.driver.find_element(By.CSS_SELECTOR, "#article_list_board_title").text
        assert "经验分享" == text
        match = re.search(r'\d+', self.driver.find_element(By.CSS_SELECTOR, "#article_list_count_board").text)
        if match:
            num = int(match.group(0))
        titlenum = len(self.driver.find_elements(By.CSS_SELECTOR,
                                                 "#artical-items-body > div > div.row > div.col > div.text-truncate"))
        if num != titlenum:
            print("经验分享板块文章数错误")
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()
        # 回到详情页
        self.driver.get(self.url)
        time.sleep(0.4)
        try:
            self.driver.find_element(By.CSS_SELECTOR,
                                     "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
        except:
            print("没有帖子")

        # 招聘信息
        self.driver.find_element(By.CSS_SELECTOR, "#topBoardList > li:nth-child(8)").click()
        # 检测是否正常
        text = self.driver.find_element(By.CSS_SELECTOR, "#article_list_board_title").text
        assert "招聘信息" == text
        match = re.search(r'\d+', self.driver.find_element(By.CSS_SELECTOR, "#article_list_count_board").text)
        if match:
            num = int(match.group(0))
        titlenum = len(self.driver.find_elements(By.CSS_SELECTOR,
                                                 "#artical-items-body > div > div.row > div.col > div.text-truncate"))
        if num != titlenum:
            print("招聘信息板块文章数错误")
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()
        # 回到详情页
        self.driver.get(self.url)
        time.sleep(0.4)
        try:
            self.driver.find_element(By.CSS_SELECTOR,
                                     "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
        except:
            print("没有帖子")

        # 福利待遇
        self.driver.find_element(By.CSS_SELECTOR, "#topBoardList > li:nth-child(9)").click()
        # 检测是否正常
        text = self.driver.find_element(By.CSS_SELECTOR, "#article_list_board_title").text
        assert "福利待遇" == text
        match = re.search(r'\d+', self.driver.find_element(By.CSS_SELECTOR, "#article_list_count_board").text)
        if match:
            num = int(match.group(0))
        titlenum = len(self.driver.find_elements(By.CSS_SELECTOR,
                                                 "#artical-items-body > div > div.row > div.col > div.text-truncate"))
        if num != titlenum:
            print("福利待遇板块文章数错误")
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()
        # 回到详情页
        self.driver.get(self.url)
        time.sleep(0.4)
        try:
            self.driver.find_element(By.CSS_SELECTOR,
                                     "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
        except:
            print("没有帖子")

        # 灌水区
        self.driver.find_element(By.CSS_SELECTOR, "#topBoardList > li:nth-child(10)").click()
        # 检测是否正常
        text = self.driver.find_element(By.CSS_SELECTOR, "#article_list_board_title").text
        assert "灌水区" == text
        match = re.search(r'\d+', self.driver.find_element(By.CSS_SELECTOR, "#article_list_count_board").text)
        if match:
            num = int(match.group(0))
        titlenum = len(self.driver.find_elements(By.CSS_SELECTOR,
                                                 "#artical-items-body > div > div.row > div.col > div.text-truncate"))
        if num != titlenum:
            print("灌水区板块文章数错误")
            # 添加一个屏幕截图
            ForumDriver.getScreeshot()
        # 回到详情页
        self.driver.get(self.url)
        time.sleep(0.4)
        try:
            self.driver.find_element(By.CSS_SELECTOR,
                                     "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
        except:
            print("没有帖子")

    # 检测用户信息
    def DetailsUerInfo(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()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        # 检测是否正确
        text = self.driver.find_element(By.CSS_SELECTOR, "#index_user_profile").text
        assert "我的帖子" == text
        text = self.driver.find_element(By.CSS_SELECTOR, "#index_user_settings").text
        assert "个人中心" == text
        text = self.driver.find_element(By.CSS_SELECTOR, "#index_user_logout > span").text
        assert "退出" == text

    #其他元素检测
    def DetailsOthElement(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.d-none.d-md-flex.me-3 > div > form > div > input").send_keys("Java")
        # 点击回车
        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(Keys.ENTER)
        # 添加一个屏幕截图查看是否成功
        ForumDriver.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) > a.nav-link.px-0.hide-theme-dark").click()
        #获取页面颜色
        color = self.driver.find_element(By.CSS_SELECTOR, "#page-wrapper").value_of_css_property("color")
        assert "248, 250, 252, 1" in color
        # 切换白天模式
        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").click()
        # 获取页面颜色
        color = self.driver.find_element(By.CSS_SELECTOR, "#page-wrapper").value_of_css_property("color")
        assert "29, 39, 59, 1" in color

        #检测信息
        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()
        time.sleep(0.2)
        text = self.driver.find_element(By.CSS_SELECTOR, "#index_message_offcanvasEnd > div.offcanvas-header").text
        print(text)

    #其他用户帖子
    ##检测其他用户帖子信息
    def DetailsOthInfo(self):
        text = self.driver.find_element(By.CSS_SELECTOR, "#article_details_author_name").text
        assert text == self.Author
        # 点击跳转至改用户“我的帖子”页
        self.driver.find_element(By.CSS_SELECTOR, "#article_details_author_name").click()
        text = self.driver.find_element(By.CSS_SELECTOR,
                                        "#bit-forum-content > div.page-body > div > div > div.col-lg-4 > div > div > div > div > h2").text
        assert text == "个人介绍"
        try:
            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()
        except:
            print("没有帖子")
        # 查看点赞
        num1 = self.driver.find_element(By.CSS_SELECTOR, "#details_article_likeCount").text
        self.driver.find_element(By.CSS_SELECTOR, "#details_btn_like_count").click()
        num2 = self.driver.find_element(By.CSS_SELECTOR, "#details_article_likeCount").text
        assert int(num1) == int(num2) - 1

        # 再次点击取消
        num1 = self.driver.find_element(By.CSS_SELECTOR, "#details_article_likeCount").text
        self.driver.find_element(By.CSS_SELECTOR, "#details_btn_like_count").click()
        num2 = self.driver.find_element(By.CSS_SELECTOR, "#details_article_likeCount").text
        if int(num1) != int(num2) + 1:
            print("无法取消点赞")

        #发私信
        # #点击取消
        # self.driver.find_element(By.CSS_SELECTOR, "#btn_details_send_message").click()
        # self.driver.find_element(By.XPATH, "").click()
        # time.sleep(2)

        #内容为空发送
        self.driver.find_element(By.CSS_SELECTOR, "#btn_details_send_message").click()
        time.sleep(2)
        self.driver.find_element(By.CSS_SELECTOR, "#btn_index_send_message > svg").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div:nth-child(3)").text
        print(text)
        assert "请输入要发送的内容" in text

        #内容不为空发送
        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("私信测试")
        self.driver.find_element(By.CSS_SELECTOR, "#btn_index_send_message").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div:nth-child(4)").text
        assert "发送成功" in text
        #查看是否收到
        ForumLogin.ForumLgin().LoginSucLgin()
        # 检测信息
        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()
        time.sleep(0.2)
        text = self.driver.find_element(By.CSS_SELECTOR, "#index_div_message_list > div:nth-child(1) > div > div.col.text-truncate > div").text
        assert "私信测试" in text
        ForumLogin.ForumLgin().LoginSucLgin2()

    # 其他元素检测
    def DetailsOthUserElement(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.d-none.d-md-flex.me-3 > div > form > div > input").send_keys(
            "Java")
        # 点击回车
        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(
            Keys.ENTER)
        # 添加一个屏幕截图查看是否成功
        ForumDriver.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) > a.nav-link.px-0.hide-theme-dark").click()
        # 获取页面颜色
        color = self.driver.find_element(By.CSS_SELECTOR, "#page-wrapper").value_of_css_property("color")
        assert "248, 250, 252, 1" in color
        # 切换白天模式
        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").click()
        # 获取页面颜色
        color = self.driver.find_element(By.CSS_SELECTOR, "#page-wrapper").value_of_css_property("color")
        assert "29, 39, 59, 1" in color

        # 检测信息
        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()
        time.sleep(0.2)
        text = self.driver.find_element(By.CSS_SELECTOR, "#index_message_offcanvasEnd > div.offcanvas-header").text
        print(text)

    # 检测其他用户信息
    def DetailsOthUerInfo(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()
        # 添加一个屏幕截图
        ForumDriver.getScreeshot()
        # 检测是否正确
        text = self.driver.find_element(By.CSS_SELECTOR, "#index_user_profile").text
        assert "我的帖子" == text
        text = self.driver.find_element(By.CSS_SELECTOR, "#index_user_settings").text
        assert "个人中心" == text
        text = self.driver.find_element(By.CSS_SELECTOR, "#index_user_logout > span").text
        assert "退出" == text


    # 回复其他用户帖子模块
    def DetailsOthUserReply(self):
        try:
            self.driver.find_element(By.CSS_SELECTOR,
                                     "#details_reply_area > div > div.col-3.card > div > h3 > a").click()
            text = self.driver.find_element(By.CSS_SELECTOR,
                                            "#bit-forum-content > div.page-body > div > div > div.col-lg-4 > div > div > div > div > h2").text
            assert text == "个人介绍"
            try:
                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()
                num1 = self.driver.find_element(By.CSS_SELECTOR, "#details_article_replyCount").text
                self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
                # WebDriverWait(self.driver, 10).until()
                time.sleep(1)
                # 清空输入框
                self.driver.find_element(By.CSS_SELECTOR,
                                         "#article_details_reply > div.editormd-toolbar > div > ul > li:nth-child(39) > a > i").click()
                # 点击回复
                self.driver.find_element(By.CSS_SELECTOR, "#details_btn_article_reply").click()
                text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
                assert "请输入回复内容" in text
                self.driver.find_element(By.CSS_SELECTOR,
                                         "#article_details_reply > div.editormd-toolbar > div > ul > li:nth-child(6) > a > i").click()
                time.sleep(0.3)
                self.driver.find_element(By.CSS_SELECTOR, "#details_btn_article_reply").click()
                text = self.driver.find_element(By.CSS_SELECTOR,
                                                "body > div.jq-toast-wrap.bottom-right > div:nth-child(2)").text
                assert "回复成功" in text
                # 检测输入框是否被清空
                text = self.driver.find_element(By.CSS_SELECTOR,
                                                "#article_details_reply > div.CodeMirror.cm-s-default.CodeMirror-wrap > div.CodeMirror-scroll > div.CodeMirror-sizer > div > div > div > div.CodeMirror-code > div > pre > span > span").text
                if "" != text:
                    print("输入框未清空")
                # 定位页面顶部的元素
                top_element = self.driver.find_element(By.CSS_SELECTOR,
                                                       "body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > h1 > a")
                # 滚动到该元素
                self.driver.execute_script("arguments[0].scrollIntoView();", top_element)
                text = self.driver.find_element(By.CSS_SELECTOR,
                                                "#details_reply_area > div.row > div.col-9 >div.card-body").text
                assert text == "**"
                num2 = self.driver.find_element(By.CSS_SELECTOR, "#details_article_replyCount").text
                assert int(num1) == int(num2) - 1
            except:
                print("没有帖子")
            # 发私信
            # #点击取消
            # self.driver.find_element(By.CSS_SELECTOR, "#btn_details_send_message").click()
            # self.driver.find_element(By.XPATH, "").click()
            # time.sleep(2)

            # 内容为空发送
            self.driver.find_element(By.CSS_SELECTOR, "#btn_details_send_message").click()
            time.sleep(0.4)
            self.driver.find_element(By.CSS_SELECTOR, "#btn_index_send_message > svg").click()
            text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
            assert "请输入要发送的内容" in text

            # 内容不为空发送
            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("私信测试")
            self.driver.find_element(By.CSS_SELECTOR, "#btn_index_send_message").click()
            text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
            assert "发送成功" in text
            # 查看是否收到
            ForumLogin.ForumLgin().LoginSucLgin()
            # 检测信息
            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()
            time.sleep(0.2)
            text = self.driver.find_element(By.CSS_SELECTOR,
                                            "#index_div_message_list > div:nth-child(1) > div > div.col.text-truncate > div").text
            assert "私信测试" in text
            ForumLogin.ForumLgin().LoginSucLgin2()
        except:
            text = self.driver.find_element(By.CSS_SELECTOR, "#details_reply_area > p").text
            assert text == "还没有回复,第一个写下回复吧"
            num1 = self.driver.find_element(By.CSS_SELECTOR, "#details_article_replyCount").text
            self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
            # WebDriverWait(self.driver, 10).until()
            time.sleep(1)
            self.driver.find_element(By.CSS_SELECTOR,"#details_btn_article_reply").click()
            text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
            assert "请输入回复内容" in text
            time.sleep(0.3)
            self.driver.find_element(By.CSS_SELECTOR,
                                     "#article_details_reply > div.editormd-toolbar > div > ul > li:nth-child(6) > a > i").click()
            time.sleep(0.3)
            self.driver.find_element(By.CSS_SELECTOR, "#details_btn_article_reply").click()
            text = self.driver.find_element(By.CSS_SELECTOR,
                                            "body > div.jq-toast-wrap.bottom-right > div:nth-child(2)").text
            assert "回复成功" in text
            # 检测输入框是否被清空
            text = self.driver.find_element(By.CSS_SELECTOR,
                                            "#article_details_reply > div.CodeMirror.cm-s-default.CodeMirror-wrap > div.CodeMirror-scroll > div.CodeMirror-sizer > div > div > div > div.CodeMirror-code > div > pre > span > span").text
            if "" != text:
                print("输入框未清空")
            # 定位页面顶部的元素
            top_element = self.driver.find_element(By.CSS_SELECTOR,
                                                   "body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > h1 > a")
            # 滚动到该元素
            self.driver.execute_script("arguments[0].scrollIntoView();", top_element)
            text = self.driver.find_element(By.CSS_SELECTOR,
                                            "#details_reply_area > div.row > div.col-9 >div.card-body").text
            assert text == "**"
            num2 = self.driver.find_element(By.CSS_SELECTOR, "#details_article_replyCount").text
            assert int(num1) == int(num2) - 1



3.7 帖子编辑页面

 ForumEdit.py

import time

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

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

    #正常新增填写帖子
    def EditSucAdd(self):
        #java
        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").clear()
        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(5) > a > i").click()
        time.sleep(0.4)
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_submit").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
        assert "发帖成功" in text
        title = self.driver.find_element(By.CSS_SELECTOR, "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").text
        assert "新增帖子测试" == title

        #C++
        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").clear()
        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(5) > a > i").click()
        time.sleep(0.4)
        #选择板块
        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.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_submit").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div:nth-child(2)").text
        assert "发帖成功" in text
        title = self.driver.find_element(By.CSS_SELECTOR,
                                         "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").text
        assert "新增帖子测试" == title

        # 前端技术
        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").clear()
        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(5) > a > i").click()
        time.sleep(0.4)
        # 选择板块
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_borad").click()
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_borad > option:nth-child(3)").click()
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_submit").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div:nth-child(2)").text
        assert "发帖成功" in text
        title = self.driver.find_element(By.CSS_SELECTOR,
                                         "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").text
        assert "新增帖子测试" == title

        # MySQL
        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").clear()
        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(5) > a > i").click()
        time.sleep(0.4)
        # 选择板块
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_borad").click()
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_borad > option:nth-child(4)").click()
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_submit").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div:nth-child(2)").text
        assert "发帖成功" in text
        title = self.driver.find_element(By.CSS_SELECTOR,
                                         "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").text
        assert "新增帖子测试" == title

        # 面试宝典
        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").clear()
        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(5) > a > i").click()
        time.sleep(0.4)
        # 选择板块
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_borad").click()
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_borad > option:nth-child(5)").click()
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_submit").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div:nth-child(2)").text
        assert "发帖成功" in text
        title = self.driver.find_element(By.CSS_SELECTOR,
                                         "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").text
        assert "新增帖子测试" == title

        # 经验分享
        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").clear()
        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(5) > a > i").click()
        time.sleep(0.4)
        # 选择板块
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_borad").click()
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_borad > option:nth-child(6)").click()
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_submit").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div:nth-child(2)").text
        assert "发帖成功" in text
        title = self.driver.find_element(By.CSS_SELECTOR,
                                         "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").text
        assert "新增帖子测试" == title

        # 招聘信息
        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").clear()
        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(5) > a > i").click()
        time.sleep(0.4)
        # 选择板块
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_borad").click()
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_borad > option:nth-child(7)").click()
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_submit").click()
        text = self.driver.find_element(By.CSS_SELECTOR,
                                        "body > div.jq-toast-wrap.bottom-right > div:nth-child(2)").text
        assert "发帖成功" in text
        title = self.driver.find_element(By.CSS_SELECTOR,
                                         "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").text
        assert "新增帖子测试" == title

        # 福利待遇
        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").clear()
        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(5) > a > i").click()
        time.sleep(0.4)
        # 选择板块
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_borad").click()
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_borad > option:nth-child(8)").click()
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_submit").click()
        text = self.driver.find_element(By.CSS_SELECTOR,
                                        "body > div.jq-toast-wrap.bottom-right > div:nth-child(2)").text
        assert "发帖成功" in text
        title = self.driver.find_element(By.CSS_SELECTOR,
                                         "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").text
        assert "新增帖子测试" == title

        # 灌水区
        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").clear()
        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(5) > a > i").click()
        time.sleep(0.4)
        # 选择板块
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_borad").click()
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_borad > option:nth-child(9)").click()
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_submit").click()
        text = self.driver.find_element(By.CSS_SELECTOR,
                                        "body > div.jq-toast-wrap.bottom-right > div:nth-child(2)").text
        assert "发帖成功" in text
        title = self.driver.find_element(By.CSS_SELECTOR,
                                         "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").text
        assert "新增帖子测试" == title

    #异常填写
    def EditFailtest(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.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        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(39) > a > i").click()
        time.sleep(0.4)
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#edit-article > div.editormd-toolbar > div > ul > li:nth-child(5) > a > i").click()
        time.sleep(0.4)
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_submit").click()
        text = self.driver.find_element(By.CSS_SELECTOR,
                                        "body > div.jq-toast-wrap.bottom-right > div").text
        assert "请输入帖子标题" in text
        #消除弹窗
        self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div > span.close-jq-toast-single").click()

        # 不填写标题和内容
        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(39) > a > i").click()
        time.sleep(0.4)
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_submit").click()
        text = self.driver.find_element(By.CSS_SELECTOR,
                                        "body > div.jq-toast-wrap.bottom-right > div:nth-child(2)").text
        assert "请输入帖子标题" in text
        self.driver.find_element(By.CSS_SELECTOR,
                                 "body > div.jq-toast-wrap.bottom-right > div:nth-child(2) > span.close-jq-toast-single").click()

        #不填写内容
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_title").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_title").send_keys("新增帖子测试")
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#edit-article > div.editormd-toolbar > div > ul > li:nth-child(39) > a > i").click()
        time.sleep(0.4)
        self.driver.find_element(By.CSS_SELECTOR, "#article_post_submit").click()
        text = self.driver.find_element(By.CSS_SELECTOR,
                                        "body > div.jq-toast-wrap.bottom-right > div").text
        assert "请输入帖子内容" in text

    #修改帖子
    def EditModifySuc(self):
        self.driver.find_element(By.CSS_SELECTOR, "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
        text1 = self.driver.find_element(By.CSS_SELECTOR, "#details_article_content > p").text
        self.driver.find_element(By.CSS_SELECTOR, "#details_artile_edit").click()
        time.sleep(0.4)
        #只修改标题
        self.driver.find_element(By.CSS_SELECTOR,"#edit_article_title").clear()
        self.driver.find_element(By.CSS_SELECTOR,"#edit_article_title").send_keys("修改帖子标题测试")
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        self.driver.find_element(By.CSS_SELECTOR, "#edit_article_submit").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").text
        assert "修改帖子标题测试" == text
        self.driver.find_element(By.CSS_SELECTOR, "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "#details_article_content > p").text
        assert text1 == text

        #只修改内容
        self.driver.find_element(By.CSS_SELECTOR, "#details_artile_edit").click()
        time.sleep(0.4)
        self.driver.find_element(By.CSS_SELECTOR,"#edit_article_content_area > div.editormd-toolbar > div > ul > li:nth-child(39) > a > i").click()
        time.sleep(0.4)
        self.driver.find_element(By.CSS_SELECTOR,"#edit_article_content_area > div.editormd-toolbar > div > ul > li:nth-child(20) > a > i").click()
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        self.driver.find_element(By.CSS_SELECTOR, "#edit_article_submit").click()
        text = self.driver.find_element(By.CSS_SELECTOR,
                                        "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").text
        assert "修改帖子标题测试" == text
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "#details_article_content > p").text
        assert "1." == text

        #标题与内容都修改
        self.driver.find_element(By.CSS_SELECTOR, "#details_artile_edit").click()
        time.sleep(0.4)
        self.driver.find_element(By.CSS_SELECTOR,"#edit_article_title").clear()
        self.driver.find_element(By.CSS_SELECTOR,"#edit_article_content_area > div.editormd-toolbar > div > ul > li:nth-child(39) > a > i").click()
        self.driver.find_element(By.CSS_SELECTOR,"#edit_article_title").send_keys("修改帖子标题测试2")
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#edit_article_content_area > div.editormd-toolbar > div > ul > li:nth-child(6) > a > i").click()
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        self.driver.find_element(By.CSS_SELECTOR, "#edit_article_submit").click()
        text = self.driver.find_element(By.CSS_SELECTOR,
                                        "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").text
        assert "修改帖子标题测试2" == text
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "#details_article_content > p").text
        assert "**" == text

        # 标题与内容都不修改
        self.driver.find_element(By.CSS_SELECTOR, "#details_artile_edit").click()
        time.sleep(0.4)
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        self.driver.find_element(By.CSS_SELECTOR, "#edit_article_submit").click()
        text = self.driver.find_element(By.CSS_SELECTOR,
                                        "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").text
        assert "修改帖子标题测试2" == text
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "#details_article_content > p").text
        assert "**" == text

    #异常修改帖子
    def EditModifyFail(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, "#details_artile_edit").click()
        time.sleep(0.4)
        self.driver.find_element(By.CSS_SELECTOR, "#edit_article_title").clear()
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        self.driver.find_element(By.CSS_SELECTOR, "#edit_article_submit").click()
        text = self.driver.find_element(By.CSS_SELECTOR,
                                        "body > div.jq-toast-wrap.bottom-right > div").text
        assert "请输入帖子标题" in text
        #消除弹窗
        self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div > span.close-jq-toast-single").click()

        #修改标题和内容为空
        self.driver.find_element(By.CSS_SELECTOR, "#edit_article_content_area > div.editormd-toolbar > div > ul > li:nth-child(39) > a > i").click()
        time.sleep(0.4)
        self.driver.find_element(By.CSS_SELECTOR, "#edit_article_submit").click()
        text = self.driver.find_element(By.CSS_SELECTOR,
                                        "body > div.jq-toast-wrap.bottom-right > div:nth-child(2)").text
        assert "请输入帖子标题" in text
        self.driver.find_element(By.CSS_SELECTOR,
                                 "body > div.jq-toast-wrap.bottom-right > div:nth-child(2) > span.close-jq-toast-single").click()

        #修改内容为空
        # 定位页面顶部的元素
        top_element = self.driver.find_element(By.CSS_SELECTOR,"#edit_article_title")
        # 滚动到该元素
        self.driver.execute_script("arguments[0].scrollIntoView();", top_element)
        self.driver.find_element(By.CSS_SELECTOR, "#edit_article_title").send_keys("修改帖子测试")
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        self.driver.find_element(By.CSS_SELECTOR, "#edit_article_submit").click()
        text = self.driver.find_element(By.CSS_SELECTOR,
                                        "body > div.jq-toast-wrap.bottom-right > div").text
        assert "请输入帖子内容" in text

3.8 “我的帖子”页面

 ForumMyFPage.py

import time

from selenium.webdriver.common.by import By

from common.Utils import ForumDriver
from tests import ForumLogin


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


    #当前用户
    def MyFPage(self):
        self.driver.find_element(By.CSS_SELECTOR, "#index_nav_avatar").click()
        self.driver.find_element(By.CSS_SELECTOR, "#index_user_profile").click()
        #记录发帖数
        try:
            num1 = len(self.driver.find_elements(By.CSS_SELECTOR, "#profile_article_body > li"))
        except:
            num1 = 0
        num2 = self.driver.find_element(By.CSS_SELECTOR, "#profile_articleCount").text
        if num1 != num2:
            print("“我的帖子”页发帖数显示错误")

        #是否可以进入详情页
        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()
        text = self.driver.find_element(By.CSS_SELECTOR, "#bit-forum-content > div.page-body > div > div > div:nth-child(2) > h3").text
        assert "最新回复" in text

    #其他用户
    def OthUserFPage(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, "#article_details_author_name").click()
        # 记录发帖数
        try:
            num1 = len(self.driver.find_elements(By.CSS_SELECTOR, "#profile_article_body > li"))
        except:
            num1 = 0
        num2 = self.driver.find_element(By.CSS_SELECTOR, "#profile_articleCount").text
        num2 = self.driver.find_element(By.CSS_SELECTOR, "#profile_articleCount").text
        if num1 != num2:
            print("“我的帖子”页发帖数显示错误")

            # 发私信
            # #点击取消
            # self.driver.find_element(By.CSS_SELECTOR, "#btn_details_send_message").click()
            # self.driver.find_element(By.XPATH, "").click()
            # time.sleep(2)

            # 内容为空发送
            self.driver.find_element(By.CSS_SELECTOR, "#btn_profile_send_message").click()
            time.sleep(0.4)
            self.driver.find_element(By.CSS_SELECTOR, "#btn_index_send_message > svg").click()
            text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
            assert "请输入要发送的内容" in text

            # 内容不为空发送
            self.driver.find_element(By.CSS_SELECTOR, "#btn_profile_send_message").click()
            self.driver.find_element(By.CSS_SELECTOR, "#index_message_receive_content").send_keys("私信测试")
            self.driver.find_element(By.CSS_SELECTOR, "#btn_index_send_message").click()
            text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div:nth-child(2)").text
            assert "发送成功" in text
            # 查看是否收到
            ForumLogin.ForumLgin().LoginSucLgin()
            # 检测信息
            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()
            time.sleep(0.2)
            text = self.driver.find_element(By.CSS_SELECTOR,
                                            "#index_div_message_list > div:nth-child(1) > div > div.col.text-truncate > div").text
            assert "私信测试" in text
            ForumLogin.ForumLgin().LoginSucLgin2()

            # 是否可以进入详情页
            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, "#article_details_author_name").click()
            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()
            text = self.driver.find_element(By.CSS_SELECTOR,
                                            "#bit-forum-content > div.page-body > div > div > div:nth-child(2) > h3").text
            assert "最新回复" in text

3.9 “个人中心”页面

 ForumPCenter.py

import time

from selenium.webdriver.common.by import By
from selenium.webdriver.remote.webelement import WebElement
from tests import ForumLogin
from common.Utils import ForumDriver

class ForumPCenter:
    url = ""
    driver = ""
    def __init__(self):
        self.url = "http://127.0.0.1:58080/index.html"
        self.driver = ForumDriver.driver
        self.driver.get(self.url)
        self.driver.find_element(By.CSS_SELECTOR, "#index_nav_avatar").click()
        self.driver.find_element(By.CSS_SELECTOR, "#index_user_settings").click()

    #修改头像
    def PCenterHeadshot(self):
        text1 = self.driver.find_element(By.CSS_SELECTOR, "#settings_avatar").text
        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("D:\自动化测试脚本\cbcfc65a0c5c4f8c587c68b31af00b9.jpg")
        text2 = self.driver.find_element(By.CSS_SELECTOR, "#settings_avatar").text
        if text1 == text2:
            print("修改失败")

    #修改昵称
    def PCenterName(self):
        self.driver.find_element(By.CSS_SELECTOR, "#setting_input_nickname").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#setting_input_nickname").send_keys("zhangsan")
        self.driver.find_element(By.CSS_SELECTOR, "#setting_submit_nickname").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
        assert "操作成功" in text
        text = self.driver.find_element(By.CSS_SELECTOR, "#settings_nickname").text
        assert "zhangsan" == text
        self.driver.find_element(By.CSS_SELECTOR, "#setting_input_nickname").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#setting_input_nickname").send_keys("张三")
        self.driver.find_element(By.CSS_SELECTOR, "#setting_submit_nickname").click()

    #修改邮箱
    def PCenterEmail(self):
        self.driver.find_element(By.CSS_SELECTOR, "#setting_input_email").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#setting_input_email").send_keys("123")
        self.driver.find_element(By.CSS_SELECTOR, "#setting_submit_email").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
        assert "操作成功" in text
        self.driver.find_element(By.CSS_SELECTOR, "#index_nav_avatar").click()
        self.driver.find_element(By.CSS_SELECTOR, "#index_user_profile").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "#profile_email").text
        assert "123" == text
        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, "#setting_input_email").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#setting_input_email").send_keys("邮箱地址")
        self.driver.find_element(By.CSS_SELECTOR, "#setting_submit_email").click()

    #修改电话号码
    def PCenterPhoneNum(self):
        self.driver.find_element(By.CSS_SELECTOR, "#setting_input_phoneNum").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#setting_input_phoneNum").send_keys("123456789")
        self.driver.find_element(By.CSS_SELECTOR, "#setting_submit_phoneNum").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
        assert "操作成功" in text
        self.driver.find_element(By.CSS_SELECTOR, "#setting_input_phoneNum").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#setting_input_phoneNum").send_keys("电话号码")
        self.driver.find_element(By.CSS_SELECTOR, "#setting_submit_phoneNum").click()

    #修改个人简介
    def PCenterProfile(self):
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        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, "#settings_submit_remark").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
        assert "操作成功" in text
        # 定位页面顶部的元素
        top_element = self.driver.find_element(By.CSS_SELECTOR, "#index_nav_avatar")
        # 滚动到该元素
        self.driver.execute_script("arguments[0].scrollIntoView();", top_element)
        time.sleep(0.4)
        self.driver.find_element(By.CSS_SELECTOR, "#index_nav_avatar").click()
        self.driver.find_element(By.CSS_SELECTOR, "#index_user_profile").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "#profile_remark").text
        assert "简介测试" == text
        self.driver.find_element(By.CSS_SELECTOR, "#index_nav_avatar").click()
        self.driver.find_element(By.CSS_SELECTOR, "#index_user_settings").click()
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        self.driver.find_element(By.CSS_SELECTOR, "#settings_textarea_remark").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_textarea_remark").send_keys("123")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_remark").click()

    #修改密码
    def PCenterPasswordFail(self):
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        #全部为空
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").clear()

        self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()
        try:
            text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
            assert "密码不能为空" in text
        except:
            print("密码为空无文字提示")

        # 原密码为空
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()
        try:
            text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
            assert "原密码不能为空" in text
        except:
            print("原密码为空无文字提示")

        # 新密码为空
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()
        try:
            text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
            assert "新密码不能为空" in text
        except:
            print("新密码为空无文字提示")

        # 确认密码为空
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()
        try:
            text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
            assert "确认密码错误" in text
        except:
            print("确认密码错误无文字提示")

        # 原密码填写错误
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").send_keys("12")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()

        try:
            text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
            if "原密码错误" not in text:
                print("文字提示错误")
        except:
            print("原密码错误无文字提示")

        # 确认密码与新密码不一致
        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("123")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()

        try:
            text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div:nth-child(2)").text
            if "两次输入的密码不相同" not in text:
                print("文字提示错误")
        except:
            print("两次输入密码不相同无文字提示")

        # 新密码与原密码一致
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").clear()
        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("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()

        try:
            text1 = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div:nth-child(3)").text
            if "新密码与原密码相同" not in text1:
                print("新密码与原密码相同无文字提示")
        except:
            try:
                text2 = self.driver.find_element(By.CSS_SELECTOR,
                                                 "body > div > div > div > div:nth-child(1) > div > div.card.card-md > div > h2").text
                if "用户登录" in text2:
                    print("新密码与原密码一致修改密码操作不应该成功,但是成功了")
            except:
                if "新密码与原密码相同" not in text1:
                    print("新密码与原密码相同无文字提示")
        ForumLogin.ForumLgin().LoginSucLgin()

    #正常修改
    def PCenterPasswordSuc(self):
        self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").clear()
        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("123")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").send_keys("123")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()
        try:
            text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
            if "操作成功" not in text:
                print("修改成功无文字提示")
        except:
            text2 = self.driver.find_element(By.CSS_SELECTOR,
                                             "body > div > div > div > div:nth-child(1) > div > div.card.card-md > div > h2").text
            if "用户登录" in text2:
                print("直接跳转至登录页面")
        # 清空输入框
        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("123")
        # 点击登录
        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.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").clear()
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_oldPassword").send_keys("123")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_newPassword").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_input_passwordRepeat").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#settings_submit_password").click()
        ForumLogin.ForumLgin().LoginSucLgin()

3.10 私信回复功能

ForumReply.py

import time

from selenium.webdriver.common.by import By
from tests import ForumLogin
from common.Utils import ForumDriver

class ForumReply:
    url = ""
    driver = ""
    def __init__(self):
        self.url = "http://127.0.0.1:58080/index.html"
        self.driver = ForumDriver.driver
        self.driver.get(self.url)
        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()

    def Reply(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, "#btn_index_message_reply").click()
        time.sleep(0.4)
        self.driver.find_element(By.CSS_SELECTOR, "#index_message_reply_receive_content").send_keys("回复测试")
        self.driver.find_element(By.CSS_SELECTOR, "#btn_index_send_message_reply").click()
        text = self.driver.find_element(By.CSS_SELECTOR, "body > div.jq-toast-wrap.bottom-right > div").text
        assert "操作成功" in text
        ForumLogin.ForumLgin().LoginSucLgin2()
        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()
        time.sleep(0.4)
        text = self.driver.find_element(By.CSS_SELECTOR, "#index_div_message_list > div:nth-child(1) > div > div.col.text-truncate > div").text
        assert "回复测试" == text
        ForumLogin.ForumLgin().LoginSucLgin()

3.11 创建启动文件

RunTest.py

from common.Utils import ForumDriver
from tests import ForumRegister
from tests import ForumLogin
from tests import ForumHpage
from tests import ForumDetails
from tests import ForumEdit
from tests import ForumMyFPage
from tests import ForumPCenter
from tests import ForumReply

if __name__ == '__main__':
    ForumHpage.ForumHpage().HpageNLogin()
    ForumRegister.ForumRegister().Registerfailtest1()
    ForumRegister.ForumRegister().Registerfailtest2()
    ForumRegister.ForumRegister().Registerfailtest3()
    ForumRegister.ForumRegister().Registerfailtest4()
    ForumRegister.ForumRegister().Registerfailtest5()
    ForumRegister.ForumRegister().Registerfailtest6()
    ForumRegister.ForumRegister().Registerfailtest7()
    ForumRegister.ForumRegister().Registerfailtest8()
    ForumRegister.ForumRegister().Registerfailtest9()
    ForumRegister.ForumRegister().RegisterSuc()
    ForumRegister.ForumRegister().RrgisterOthElement()
    ForumLogin.ForumLgin().LoginfailTest1()
    ForumLogin.ForumLgin().LoginfailTest2()
    ForumLogin.ForumLgin().LoginfailTest3()
    ForumLogin.ForumLgin().LoginfailTest4()
    ForumLogin.ForumLgin().LoginfailTest5()
    ForumLogin.ForumLgin().LoginfailTest6()
    ForumLogin.ForumLgin().LoginOthElement()
    ForumLogin.ForumLgin().LoginSucLgin()
    ForumHpage.ForumHpage().HpageSector()
    ForumHpage.ForumHpage().HpageOthElement()
    ForumHpage.ForumHpage().HpageInfo()
    ForumHpage.ForumHpage().HpagePost()
    ForumDetails.ForumDetails().DetailsReply()
    ForumDetails.ForumDetails().DetailsInfo()
    ForumDetails.ForumDetails().DetailsUerInfo()
    ForumDetails.ForumDetails().DetailsSector()
    ForumDetails.ForumDetails().DetailsOthElement()
    ForumLogin.ForumLgin().LoginSucLgin2()
    ForumDetails.ForumDetails().DetailsOthInfo()
    ForumDetails.ForumDetails().DetailsOthUerInfo()
    ForumDetails.ForumDetails().DetailsOthUserElement()
    ForumDetails.ForumDetails().DetailsOthUserReply()
    ForumMyFPage.ForumMyFPage().OthUserFPage()
    ForumLogin.ForumLgin().LoginSucLgin()
    ForumEdit.ForumEdit().EditSucAdd()
    ForumEdit.ForumEdit().EditFailtest()
    ForumEdit.ForumEdit().EditModifySuc()
    ForumEdit.ForumEdit().EditModifyFail()
    ForumMyFPage.ForumMyFPage().MyFPage()
    ForumPCenter.ForumPCenter().PCenterHeadshot()
    ForumPCenter.ForumPCenter().PCenterName()
    ForumPCenter.ForumPCenter().PCenterEmail()
    ForumPCenter.ForumPCenter().PCenterPhoneNum()
    ForumPCenter.ForumPCenter().PCenterProfile()
    ForumPCenter.ForumPCenter().PCenterPasswordFail()
    ForumPCenter.ForumPCenter().PCenterPasswordSuc()
    ForumReply.ForumReply().Reply()

    ForumDriver.driver.quit()

四、项目BUG

本次测试共发现了13个BUG。

BUG1:

预期结果:搜索能够点击搜索

实际结果:搜索只能回车进行搜索

BUG2:

预期结果:点击搜索出现搜索内容

实际结果:未出现搜索内容

BUG3:

预期结果:个人主页修改信息为空有文字提示

实际结果:无文字提示,仅简单光标闪烁

BUG4:

预期结果:修改密码中,原密码错误,文字提示

实际结果: 文字提示错误,显示“参数错误”

BUG5:

预期结果:修改密码中,新密码与旧密码一致,不能修改成功,文字提示

实际结果: 可以修改成功

BUG6:

预期结果:修改密码成功出现文字提示,并跳转到登录页面重新登录

实际结果: 修改成功无文字提示,直接跳转至登录页面

BUG7:

预期结果:修改帖子能够选择板块修改

实际结果: 修改帖子不能选择板块修改

BUG8:

预期结果:昵称重复注册失败,提示已存在昵称

实际结果:注册成功

BUG9:

 预期结果:首次点击点赞按钮点赞成功,再次点击取消点赞

实际结果:再次点击无法取消,可以无限点赞,且点赞数增加

BUG10:

预期结果:每次回复帖子之后,输入框内容清空

实际结果:回复帖子后,输入框内容未清空

BUG11:

预期结果:回复内容可删除

实际结果:回复内容不可删除

BUG12:

预期结果:点击帖子区域查看帖子

实际结果:只能点击标题文字查看帖子,文字内容短不易察觉

BUG13:

预期结果:详情页标题与内容区别明显

实际结果:详情页标题与内容无明显分格符

五、项目总结

 本次测试共编写了70条测试用例,覆盖了论坛系统的注册页、登录页、编辑页和详情页等功能,以及论坛系统的界面、兼容性、易用性、安全性等方面进行了测试,同时本次测试采用手动测试+自动化测试,通过本次测试共发现了13个大小BUG,以便更好完善论坛系统。

六、测试脚本代码链接

自动化测试脚本: 各种自动化测试的脚本 - Gitee.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值