目录一、环境准备1. 安装依赖包2. 浏览器驱动配置Selenium 必需二、接口自动化实战登录接口1. 接口模拟信息真实项目从接口文档 / 抓包获取2. 完整自动化脚本带断言、多用例、注释3. 脚本说明 执行4. 扩展方向企业常用三、UI 自动化实战网页登录页面1. 页面元素定位规则关键2. 完整 UI 自动化脚本3. 核心知识点讲解4. 运行效果四、接口自动化 vs UI 自动化 区别工作中怎么选五、入门进阶方向补充小练习巩固一、环境准备1. 安装依赖包打开 CMD / 终端执行# 接口自动化依赖 pip install requests # UI自动化依赖 pip install selenium2. 浏览器驱动配置Selenium 必需查看本地 Chrome 版本浏览器右上角 → 设置 → 关于 Chrome下载对应版本 ChromeDriver两种配置方式二选一方式 1把chromedriver.exe放到Python 安装根目录无需代码配置路径方式 2代码里手动指定驱动路径二、接口自动化实战登录接口1. 接口模拟信息真实项目从接口文档 / 抓包获取请求地址http://127.0.0.1:8080/api/login本地模拟接口你可替换成真实接口请求方式POST请求头Content-Type: application/json请求入参JSONjson{ username: 账号, password: 密码 }响应规则账号密码正确{code:200,msg:登录成功,data:{token:xxxx}}账号 / 密码为空{code:400,msg:请输入用户名/密码}账号密码错误{code:401,msg:账号或密码不正确}账号锁定{code:403,msg:密码错误次数过多账号已临时锁定}2. 完整自动化脚本带断言、多用例、注释# login_api_test.py 登录接口自动化测试 import requests # 接口基础地址 base_url http://127.0.0.1:8080/api/login # 请求头 headers { Content-Type: application/json } def login(username, password): 封装登录请求方法 payload { username: username, password: password } # 发送POST请求 res requests.post(urlbase_url, jsonpayload, headersheaders) # 返回响应json数据 return res.json() # 执行测试用例 断言 if __name__ __main__: # 用例1正常登录正向用例 print( 用例1正确账号密码登录 ) res1 login(test001, 123456abc) assert res1[code] 200, 用例1失败登录未成功 print(用例1执行通过\n) # 用例2用户名为空 print( 用例2用户名为空 ) res2 login(, 123456abc) assert res2[code] 400 and res2[msg] 请输入用户名/密码, 用例2失败 print(用例2执行通过\n) # 用例3密码错误 print( 用例3密码错误 ) res3 login(test001, wrong123) assert res3[code] 401 and res3[msg] 账号或密码不正确, 用例3失败 print(用例3执行通过\n) # 用例4账号密码均为空 print( 用例4账号密码都为空 ) res4 login(, ) assert res4[code] 400, 用例4失败 print(所有接口用例全部执行完成)3. 脚本说明 执行封装思想把重复的登录请求抽成login()函数减少冗余代码断言自动化核心用来自动判断结果是否符合预期断言失败程序直接报错执行直接运行.py文件控制台打印用例执行结果4. 扩展方向企业常用接入测试框架pytest批量执行、生成测试报告、参数化用例增加异常处理超时、网络异常、接口 500 报错捕获数据分离把账号密码、接口地址写到配置文件硬编码不利于维护三、UI 自动化实战网页登录页面模拟手动打开浏览器 → 输入账号密码 → 点击登录 → 校验结果全流程。1. 页面元素定位规则关键假设登录页地址http://127.0.0.1:8080/login.html页面元素用户名输入框id username密码输入框id password登录按钮id loginBtn提示语标签id tipMsg2. 完整 UI 自动化脚本# login_ui_test.py 登录UI自动化测试 from selenium import webdriver from selenium.webdriver.common.by import By from time import sleep # 1. 初始化浏览器不配置驱动路径就默认读取系统环境/Python目录下的chromedriver driver webdriver.Chrome() # 设置浏览器窗口大小 driver.maximize_window() # 设置页面加载超时时间 driver.implicitly_wait(5) try: # 2. 打开登录页面 url http://127.0.0.1:8080/login.html driver.get(url) sleep(1) # 简单等待页面加载 # 用例1正常登录 print( 执行UI用例1正常登录 ) # 定位输入框并输入内容 driver.find_element(By.ID, username).send_keys(test001) driver.find_element(By.ID, password).send_keys(123456abc) # 点击登录按钮 driver.find_element(By.ID, loginBtn).click() sleep(2) # 断言跳转首页通过地址判断 assert index.html in driver.current_url, UI用例1登录跳转失败 print(UI用例1 通过\n) # 返回登录页执行下一条用例 driver.get(url) sleep(1) # 用例2用户名空直接点击登录 print( 执行UI用例2用户名为空登录 ) driver.find_element(By.ID, password).send_keys(123456abc) driver.find_element(By.ID, loginBtn).click() sleep(1) # 获取页面提示文本并断言 tip_text driver.find_element(By.ID, tipMsg).text assert tip_text 请输入用户名, UI用例2 提示文案错误 print(UI用例2 通过\n) except Exception as e: print(f脚本执行异常{e}) finally: # 无论成功/失败最后关闭浏览器 sleep(2) driver.quit()3. 核心知识点讲解元素定位Selenium 核心常用 4 种By.ID优先级最高、最稳定推荐优先使用By.NAME、By.XPATH、By.CLASS_NAMEID 不存在时使用等待方式implicitly_wait()隐式等待全局元素加载完就执行sleep()强制等待简单粗暴调试用正式脚本少用操作动作send_keys()输入文本click()点击元素text获取元素文本current_url获取当前页面地址4. 运行效果自动拉起 Chrome 浏览器自动输入账号密码、点击登录自动校验页面跳转 / 提示文字执行完毕自动关闭浏览器四、接口自动化 vs UI 自动化 区别工作中怎么选维度接口自动化UI 自动化执行速度极快无浏览器渲染慢启动浏览器、加载页面稳定性高不受页面样式改动影响较低页面改布局 / 元素 ID 就会失败适用场景后端接口、核心业务流程、回归测试前端页面交互、完整流程模拟维护成本低高企业实战建议优先做接口自动化覆盖 80% 核心业务回归关键页面流程补充少量UI 自动化模拟真实用户操作线上回归、每日巡检主力使用接口自动化五、入门进阶方向框架升级学习pytest allure实现用例管理、精美测试报告接口学习 JMeter 做接口性能压测UI学习 Playwright新一代自动化框架比 Selenium 更稳更快持续集成把自动化脚本接入 Jenkins实现每日自动跑用例补充小练习巩固基于上面代码自行拓展接口脚本新增「连续 5 次输错密码账号锁定」用例并加断言UI 脚本新增「密码框切换显示 / 隐藏」的自动化步骤