智能体测开Day31

发布时间:2026/7/23 14:50:38

智能体测开Day31
test_skipimport pytest version V1R2 pytest.fixture def login(): print(前置) yield print(后置) def test_001(login): print(测试用例添加成员) pytest.mark.skip def test_002(login): print(测试用例修改成员) pytest.mark.skip(reason功能有缺陷未处理) def test_003(login): print(测试用例修改成员) pytest.mark.skipif(version V1R1,reason 功能有缺陷未处理) def test_004(login): print(测试用例修改成员)UI自动化测试环境搭建 seleniumpytest数据驱动去实现一个UI自动化测试框架 UI自动化测试是投入产出比ROI最低的测试类型。它脆弱UI易变、昂贵编写和维护耗时、运行慢。 实现功能 1代码分层管理 2数据的分层管理数据驱动 3支持生成测试报告 4支持日志的记录和打印方便定位问题 5将测试报告发送给其他测试人员 POM模型去实现page object model 将页面元素的定位和基本操作封装为一个类基础类 通过其他类去继承该基础类提高代码的复用率并且方便维护代码 代码分层 测试层整个框架的入口是测试的总入口 data层数据层可以存储测试数据文件配置数据文件 pageobject层核心层业务逻辑层类里面实现了对某些功能的逻辑处理 base层基础层 定位元素操作元素的基础类 文件进行读取解析类 日志管理器 报告层生成的报告数据和报告文件 日志层存储日志文件 自动化测试代码分层管理basepage基础层元素定位点击发送等 获取驱动的函数 基础类 关闭浏览器 打开某个页面 定位元素 点击 发送信息 切换iframe 切换到默认层 切换到上一层 选中 根据文本 根据下拉框选中 根据value选中 截图 import time from selenium import webdriver from selenium.webdriver.support import expected_conditions from selenium.webdriver.support.select import Select from selenium.webdriver.support.wait import WebDriverWait def get_Driver(browserEdge): if browserChrome: driver webdriver.Chrome() elif browserFirefox: driver webdriver.Firefox() elif browserSafari: driver webdriver.Safari() else: driver webdriver.Edge() return driver class BasePage: def __init__(self,driver): self.driver driver # 打开网页 def open(self,url): self.driver.get(url) # 窗口最大化 self.driver.maximize_window() # 隐式等待 self.driver.implicitly_wait(3) # 关闭 def close(self): self.driver.close() # 退出 def quit(self): self.driver.quit() # 定位元素 def locator_element(self,locatorstr): 定位元素 :param locatorstr: 定位元素的字符串格式类似于 id xxx class name xxx tag namexxx :return: try: # 处理字符串 s locatorstr.split() locator (s[0].strip(),s[1].strip()) a WebDriverWait(self.driver, 3, 0.3).until(expected_conditions.presence_of_element_located(locatorlocator)) print(f定元素【{locatorstr}】成功) return a except Exception as e: print(f定元素【{locatorstr}】出错{e}) # 点击 def click(self,locatorstr): try: self.locator_element(locatorstr).click() print(f点击元素【{locatorstr}】成功) except Exception as e: print(f点击元素【{locatorstr}】出错{e}) # 发送信息 def send(self,locatorstr,text): try: self.locator_element(locatorstr).send_keys(text) print(f给元素【{locatorstr}】发送【{text}】成功) except Exception as e: print(f给元素【{locatorstr}】发送【{text}】出错{e}) # 切入iframe def enter_Iframe(self,locatorstr): try: # 切换到iframe中 self.driver.switch_to.frame(self.locator_element(locatorstr)) print(f切入iframe【{locatorstr}】成功) except Exception as e: print(f切入iframe【{locatorstr}】出错{e}) # 切换到默认层 def switch_To_Default_Content(self): try: self.driver.switch_to.default_content() print(f切换到最外层成功) except Exception as e: print(f切换到最外层出错{e}) # 切换到上一层 def switch_To_Parent_Frame(self): try: self.driver.switch_to.parent_frame() print(f切换到上一层成功) except Exception as e: print(f切换到上一层出错{e}) # 根据下拉框选中 def select_By(self,locatorstr): try: select Select(self.locator_element(locatorstr)) print(f选择下拉框【{locatorstr}】成功) return select except Exception as e: print(f选择下拉框【{locatorstr}】出错{e}) # 下拉框根据文本选中内容 def select_By_Text(self,locatorstr,visible_text): try: self.select_By(locatorstr).select_by_visible_text(visible_text) print(f选择下拉框文本选中内容【{locatorstr}】成功) except Exception as e: print(f选择下拉框文本选中内容【{locatorstr}】出错{e}) # 下拉框根据value选中 def select_By_Value(self,locatorstr,value): try: self.select_By(locatorstr).select_by_value(value) print(f选择下拉框value选中内容【{locatorstr}】成功) except Exception as e: print(f选择下拉框value选中内容【{locatorstr}】出错{e}) # 截图 def takeScreenshot(self): try: filename time.strftime(%Y%m%d%H%M%S, time.localtime()) self.driver.save_screenshot(fxinqidian_ranzhi_index_{filename}.png) print(f截图成功) except Exception as e: print(f截图出错{e}) if __name__ __main__: driver get_Driver() # 打开网页 bp BasePage(driver) bp.open(http://127.0.0.1/ranzhi/www) # 发送信息 bp.send(id account,admin) bp.send(id password,123456) bp.click(id submit) # 点击后台管理 bp.click(id s-menu-superadmin) time.sleep(1) # 切换到iframe中 bp.enter_Iframe(id iframe-superadmin) # 点击添加成员 bp.click(link text 添加成员) time.sleep(2) # 添加用户名 bp.send(id account,lucy) # 添加真实姓名 bp.send(id realname,伍二宝) # 选择性别 bp.click(id genderm) # 选择部门 # 下拉框创建select对象 # 根据文本选中 bp.select_By_Text(id dept,/市场部) # 选择角色 # 下拉框创建select对象 # 根据value选中 bp.select_By_Value(id role,pm) # 添加密码 bp.send(id password1,123456) # 重复密码 bp.send(id password2,123456) # 添加邮箱 bp.send(id email,1584561163.com) # 点击保存 bp.click(id submit) time.sleep(10) # 截图 bp.takeScreenshot() # iframe切换默认层 bp.switch_To_Default_Content() # 签退 bp.click(link text 签退)read_file(解析文件方法) 获取项目路径 解析csv 解析ini 解析excel import configparser import os.path def get_project_path(): # 获取父路径 path os.path.dirname(__file__) path os.path.dirname(path) return path # 解析ini文件 def read_ini(filename,section,key): 解析ini文件返回一个字符串类型 :param filename: 文件名称 :param section: 节点名 :param key: 关键词 :return: value值 # 获取完整的文件路径 filepath get_project_path()\\data\\filename cp configparser.ConfigParser() cp.read(filepath,encodingutf-8) value cp.get(section,key) return value if __name__ __main__: url read_ini(evn.ini,evn,url) print(url) dbinfo read_ini(evn.ini,mysql,dbinfo) print(dbinfo) d eval(dbinfo) print(type(d)) #class dictevn.ini数据ini文件[evn] ;节点起分类作用 urlhttp://127.0.0.1/ranzhi/www useradmin pwd123456 [mysql] dbinfo{user:root,pwd:123456,host:127.0.0.1,port:3306,database:ranzhi,charset:utf8}

相关新闻

洁净设备空间革命:超薄FFU如何突破层高极限?本刊深度探访艾立工业全产业链制造现场——设计制造能力展示

洁净设备空间革命:超薄FFU如何突破层高极限?本刊深度探访艾立工业全产业链制造现场——设计制造能力展示

2026/7/23 14:40:38

在老旧洁净厂房升级、实验室改造以及高端精密制造的特定场景中,层高限制始终是工程师们无法回避的痛点。传统FFU(风机过滤单元)的箱体厚度通常在280mm至350mm之间,当建筑夹层有限或需要密集排布公用设施时,每一厘米的压…

SerDes芯片BIST与BER测试:原理、配置与信号完整性实战

SerDes芯片BIST与BER测试:原理、配置与信号完整性实战

2026/7/23 14:40:38

1. 项目概述与核心价值在高速数字系统设计中,比如高清视频传输、工业相机数据采集或者车载显示屏驱动,我们常常面临一个头疼的问题:如何把几十根并行的数据线,稳定可靠地传输到几米甚至十几米外的接收端?传统的并行总线…

AI产品经理都在偷用的流程图速建法:1个Prompt+2个插件+5分钟出图,今日限时开源

AI产品经理都在偷用的流程图速建法:1个Prompt+2个插件+5分钟出图,今日限时开源

2026/7/23 14:40:38

更多请点击: https://codechina.net 第一章:AI流程图制作教程 AI流程图是梳理机器学习项目逻辑、可视化模型训练与推理链路的关键工具。现代AI开发中,流程图不再仅用于静态展示,更需支持可执行语义、版本协同与自动代码生成。本章…

2026年7月22日科技热点新闻

2026年7月22日科技热点新闻

2026/7/23 17:30:51

科技热点速览|2026年07月22日 国内外技术动态 定位:技术资讯简报,仅客观记录新技术发布、产品迭代与项目进展,不含主观评价。 国内科技动态2026世界人工智能大会(WAIC)正式闭幕。大会为期四天,汇…

TI Tiva™ MCU HIB模块深度解析:精准低功耗休眠与唤醒实战

TI Tiva™ MCU HIB模块深度解析:精准低功耗休眠与唤醒实战

2026/7/23 17:30:51

1. 项目概述与HIB模块核心价值 在物联网节点、便携式医疗设备或者野外环境监测仪这类对功耗极其敏感的应用里,工程师们最头疼的问题往往不是功能实现,而是如何让设备在“待机”时近乎“假死”,同时又能精准地在需要的时候“醒来”。我经手过不…

Seedance 2.0第三方创作工具怎么选?商用视频工作流评估指南

Seedance 2.0第三方创作工具怎么选?商用视频工作流评估指南

2026/7/23 17:30:51

Seedance 2.0第三方创作工具怎么选?商用视频工作流评估指南 选择Seedance 2.0第三方创作工具,不能只看“能不能生成视频”,还要看它是否适合你的创作角色与交付流程。FusionAI(融艺 AI),属于面向电商、品牌…

2026 AI Agent 工具选型指南:搭建类工具与搜索增强工具搭配方案

2026 AI Agent 工具选型指南:搭建类工具与搜索增强工具搭配方案

2026/7/23 17:30:51

2026 年,AI Agent 产业进入规模化落地阶段,对应的工具生态也日趋完善,从零代码搭建平台到企业级商用方案,从开源开发框架到海外成熟产品,各类工具覆盖了不同技术能力、不同业务规模的用户需求,基本解决了搭…

企业地址数据治理指南|空间智能厂商,深度解析技术能力

企业地址数据治理指南|空间智能厂商,深度解析技术能力

2026/7/23 17:30:51

存量地址杂乱、口语化地址无法识别、企业经营地址难以核验,是全行业数字化转型普遍遇到的空间数据难题,挑选适配自身业务的空间智能服务商,需要从底层数据资产、技术解析能力、行业适配度多维度评判,丰图科技依托 4 亿标准地址、100 亿语义地址数据底座,成为覆盖全行业的通用型…

Claude Code周限额提升50%:AI编程助手高效使用指南

Claude Code周限额提升50%:AI编程助手高效使用指南

2026/7/23 17:20:51

Claude Code 用户注意:官方刚刚宣布周限额提升 50%,这个福利将持续到 8 月 19 日。对于经常使用 Claude Code 进行编程辅助的开发者来说,这意味着一周内可以处理更多的代码任务、获得更长时间的 AI 编程支持。 这次限额提升直接关系到每个用…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/23 3:40:08

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/23 4:40:05

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/23 1:54:13

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

企业级AI搜索落地选型实战手册(含LLM+RAG+Hybrid架构对比矩阵与ROI测算模板)

企业级AI搜索落地选型实战手册(含LLM+RAG+Hybrid架构对比矩阵与ROI测算模板)

2026/7/23 0:09:56

更多请点击: https://kaifayun.com 第一章:企业级AI搜索落地选型实战手册(含LLMRAGHybrid架构对比矩阵与ROI测算模板) 企业级AI搜索系统落地成败,核心在于技术选型与业务价值的精准对齐。盲目堆砌大模型能力或过度依赖…

TM4C129LNCZAD外设实战:LCD、比较器与PWM寄存器配置详解

TM4C129LNCZAD外设实战:LCD、比较器与PWM寄存器配置详解

2026/7/23 0:09:56

1. 项目概述与核心价值在嵌入式系统开发,尤其是基于ARM Cortex-M内核的微控制器项目中,深入理解并熟练配置芯片的片上外设,是从“点亮LED”迈向“实现复杂系统功能”的关键一步。Tiva™ TM4C129LNCZAD作为TI公司Cortex-M4F家族中的高性能成员…

AtomCode `fmt_dur` 争议溯源:两个函数、三段演进、四个事实

AtomCode `fmt_dur` 争议溯源:两个函数、三段演进、四个事实

2026/7/23 0:09:56

一、快速声明与争议背景本文是对 AtomCode 终端 spinner 时长显示 fmt_dur 相关说法的事实性核验。2026 年 7 月 CSDN 上出现两篇互相矛盾的博文,近期又有 AI 在对话中输出格式描述 XhYm / YmZs / Zs。本文基于 AtomCode 仓库 main4677ddfa 及全分支 Git 历史给出可…