博客系统的功能测试
编写测试用例
1、登录页面:页面正常打开
(1)、正常登录:账号:zhangsan,密码:123456
(2)、异常登录:账号为空/密码为空、不为空:账号错误/密码错误
2、博客列表页:页面正常打开
(1):个人信息模块、菜单模块、博客列表模块
(2):未登录状态:弹窗提示登录-进入登录页面
3、编辑博客页
(1):登录状态下:编辑博客页面正常打开、正常填写博客能提交成功、异常填写提交失败
(2):未登录状态下-弹窗提示登录-进入登录页面
测试环境和模块
模块:登录、博客详情页、编辑博客
环境:Window11+Edge146+Pycharm2025.3.3
工具:Python、selenium
登录页面
创建驱动对象
python
import datetime
import os.path
import sys
from selenium import webdriver
from selenium.webdriver.edge.service import Service
class Driver:
driver=None
def __init__(self):
options = webdriver.EdgeOptions()
self.driver=webdriver.Edge(service=Service("D:\\edgedriver_win64\\msedgedriver.exe"))
self.driver.implicitly_wait(3)
def getScreenshot(self):
#创建屏幕截图
dirname=datetime.datetime.now().strftime("%Y-%m-%d")
#判断dirname文件夹是否存在
if not os.path.exists("../images/"+dirname):
os.mkdir("../images/"+dirname)
filename=sys._getframe().f_back.f_code.co_name+"-"+datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S")+".png"
self.driver.save_screenshot("../images/"+dirname+"/"+filename)
BlogDriver=Driver()
驱动对象:控制浏览器设备的遥控器,不创建驱动对象,代码就碰不到浏览器
python
import time
from selenium.webdriver.common.by import By
from common.Utils import BlogDriver
class BlogLogin:
url=""
driver=""
def __init__(self):
self.url="http://49.235.61.184:19090/blog_login.html"
self.driver=BlogDriver.driver
self.driver.get(self.url)
#成功登录的测试用例
def LoginSucTest(self):
# self.driver.find_element(By.CSS_SELECTOR, "#username").clear()
# self.driver.find_element(By.CSS_SELECTOR, "#password").clear()
self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("zhangsan")
self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.left > div > h3")
BlogDriver.getScreenshot()
#异常登录测试用例
def LoginFailedTest(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("12345")#错误的密码
self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
BlogDriver.getScreenshot()
login=BlogLogin()
login.LoginSucTest()
driver.get():是可以打开网页
driver.find_element():查找元素
send_keys():查找到输入框进行输入
click():点击
driver.quit():关闭浏览器
博客详情页
python
from selenium.webdriver.common.by import By
from common.Utils import BlogDriver
#博客首页测试用例
class BlogList:
url=""
driver=""
def __init__(self):
self.url = "http://49.235.61.184:19090/blog_list.html"
self.driver = BlogDriver.driver
self.driver.get(self.url)
#测试首页(登录情况下)
def ListTestByLogin(self):
#测试博客标题是否存在
self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div:nth-child(2) > div.title")
self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div:nth-child(2) > div.desc")
#测试博客按钮是否存在
self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(2) > a")
self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.left > div > h3")
#添加屏幕截图
BlogDriver.getScreenshot()
必须要登录完成后才能进行查看
编辑博客
python
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from common.Utils import BlogDriver
class BlogEdit:
url=""
driver=""
def __init__(self):
self.url="http://49.235.61.184:19090/blog_edit.html"
self.driver=BlogDriver.driver
self.driver.get(self.url)
def EditSucTestByLogin(self):
self.driver.find_element(By.CSS_SELECTOR,"#title").send_keys("自动化测试程序")
self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
adult=self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div:nth-child(2) > div.title").text
assert adult=="自动化测试创建"
BlogDriver.getScreenshot()
将几个文件进行整合
python
from Tests import BlogLogin
from common.Utils import BlogDriver
from Tests import BlogList
from Tests import BlogEdit
if __name__ == "__main__":
# BlogLogin.BlogLogin().LoginFailedTest()
BlogLogin.BlogLogin().LoginSucTest()
BlogList.BlogList().ListTestByLogin()
BlogEdit.BlogEdit().EditSucTestByLogin()
BlogDriver.driver.quit()
查找对应元素ID的方法
|---------------------------|---------------------------------------------------|------|---|
| 定位方式 | 代码示例 | 适用场景 | |
| **By.ID** | `find_element(By.ID, "username")` | 元素有唯一 ID 时首选 ||
| **By.NAME** | `find_element(By.NAME, "email")` | 表单元素常用 ||
| **By.CLASS\_NAME** | `find_element(By.CLASS_NAME, "btn-primary")` | 样式类名唯一时 ||
| **By.TAG\_NAME** | `find_element(By.TAG_NAME, "input")` | 特定标签类型 ||
| **By.XPATH** | `find_element(By.XPATH, "//div[@id='main']")` | 复杂定位场景 ||
| **By.CSS\_SELECTOR** | `find_element(By.CSS_SELECTOR, "#main .title")` | 灵活强大的选择器 ||