版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
20XX/XX/XXPython自动化测试框架RobotFramework实战指南汇报人:XXXCONTENTS目录01
RobotFramework框架概述02
核心架构与组件详解03
环境搭建全流程04
RIDE界面操作实战CONTENTS目录05
测试用例设计方法论06
Web自动化测试实战07
高级应用与最佳实践RobotFramework框架概述01框架定义与核心价值
RobotFramework定义RobotFramework是一个基于Python的开源自动化测试框架,采用关键字驱动模式,支持验收测试(ATDD)和行为驱动开发(BDD),可用于Web、API、移动端、数据库等多类型测试场景。
核心特性:关键字驱动通过预定义或自定义关键字封装测试步骤,测试用例以表格形式编写,无需编写底层代码,降低技术门槛,非开发人员也可快速上手。
跨平台与多场景支持兼容Windows、Linux、macOS系统,支持Web自动化(SeleniumLibrary)、API测试(RequestsLibrary)、移动端测试(AppiumLibrary)等多种测试类型。
核心价值:提升测试效率通过关键字复用、数据驱动和自动化报告生成,减少重复工作,提高测试用例可维护性,支持持续集成(CI/CD)流程,助力快速迭代与质量保障。关键字驱动测试模式解析关键字驱动的核心概念
关键字驱动是RobotFramework的核心模式,将测试逻辑抽象为易于理解的"关键字",测试人员无需编写代码,通过组合预定义或自定义关键字实现测试用例。关键字可封装具体操作,如"打开浏览器"、"输入文本",支持自然语言式用例编写。关键字的分类与应用
关键字分为内置关键字和自定义关键字。内置关键字由框架或测试库提供,如SeleniumLibrary的"OpenBrowser";自定义关键字可通过RF表格语法或Python/Java编写,支持逻辑复用。例如通过"LoginToSystem"关键字封装用户名密码输入及登录按钮点击流程。关键字驱动的优势
关键字驱动模式降低技术门槛,非开发人员可参与用例设计;支持模块化与复用,提高测试效率;用例结构清晰,易于维护。例如通过封装"百度搜索"关键字,可快速复用至不同搜索场景的测试用例中。跨平台与多场景支持特性多操作系统兼容RobotFramework可在Windows、Linux、macOS等主流操作系统上运行,满足不同开发和测试环境的需求,实现跨平台一致的测试执行效果。多类型应用测试支持支持Web应用(通过SeleniumLibrary)、移动端应用(通过AppiumLibrary)、桌面应用(通过AutoItLibrary)、数据库(通过DatabaseLibrary)及API接口(通过RequestsLibrary)等多种场景的自动化测试。丰富的第三方库生态拥有完善的第三方库生态,涵盖各类测试需求,如SikuliLibrary用于图像识别、SSHLibrary用于远程操作、MongoDBLibrary用于NoSQL数据库测试等,可灵活扩展测试能力。持续集成与工具集成可与Jenkins、GitLabCI等持续集成工具无缝集成,支持命令行执行测试并生成JUnit格式报告,便于融入自动化测试流水线,提升测试效率和持续性。与主流测试框架对比优势
01关键字驱动,降低技术门槛无需编写代码,通过组合预定义关键字(如"OpenBrowser"、"InputText")即可实现测试逻辑,非技术人员也能快速上手。
02多场景支持,一站式解决方案支持Web(SeleniumLibrary)、API(RequestsLibrary)、移动端(AppiumLibrary)、数据库(DatabaseLibrary)等多类型测试,避免多框架切换成本。
03丰富生态,扩展能力强拥有BuiltIn、Collections等内置库,同时支持第三方库和自定义Python/Java库,可满足复杂业务需求,如集成AI插件实现自然语言转测试脚本。
04直观报告,结果分析高效自动生成HTML格式报告(report.html)和详细日志(log.html),包含用例状态、执行时间、关键字步骤等信息,便于问题定位与质量评估。
05跨平台与CI/CD集成便捷兼容Windows、Linux、macOS系统,支持Jenkins、GitLabCI等持续集成工具,通过命令行执行测试并输出JUnit格式报告,无缝融入自动化流水线。核心架构与组件详解02测试库体系结构测试库核心分类RobotFramework测试库分为标准库与扩展库。标准库为框架内置,如BuiltIn提供基础关键字、Collections支持集合操作;扩展库需额外安装,如SeleniumLibrary用于Web测试、RequestsLibrary处理HTTP请求,覆盖Web、API、移动端等多场景。标准库功能概述标准库无需安装即可使用,包含12类核心功能:BuiltIn提供变量赋值等基础操作,OperatingSystem支持文件/进程管理,String处理字符串验证,DateTime进行日期转换,满足通用测试需求。扩展库生态矩阵扩展库覆盖多测试领域:Web测试用SeleniumLibrary,API测试用RequestsLibrary,移动端测试用AppiumLibrary,数据库测试用DatabaseLibrary,桌面应用测试用AutoItLibrary,通过pip命令即可快速安装对应库文件。库与框架协作机制测试库通过关键字接口与框架交互,执行引擎加载库文件后,将测试用例中的关键字映射为库方法。例如SeleniumLibrary的OpenBrowser关键字,实际调用SeleniumWebDriver的浏览器启动功能,实现测试步骤与底层操作的解耦。测试套件与用例组织模型
三级层级结构采用"测试项目(Project)-测试套件(TestSuite)-测试用例(TestCase)"三级组织模型,支持多层嵌套管理。项目类型选择Directory可创建包含子套件的目录结构,File类型仅支持单文件用例。
套件核心配置测试套件可配置SuiteSetup/Teardown(套件级初始化/清理)、TestSetup/Teardown(用例级前置/后置操作)、TestTimeout(用例超时时间)及TestTemplate(用例模板关键字),实现批量用例统一控制。
资源复用机制通过导入Library(测试库)、Resource(资源文件)和Variables(变量文件)实现关键字与数据复用。资源文件可封装公共关键字,变量文件支持标量(${var})、列表(@{list})和字典(&{dict})类型定义。
标签分类管理支持为测试套件/用例添加Tags标签(如smoke、regression),执行时可通过--include/-i或--exclude/-e参数筛选用例,实现按功能模块、优先级或测试类型的灵活执行。变量系统与数据驱动机制变量类型与定义方式RobotFramework支持三种变量类型:标量变量(${变量名})用于存储单个值,如${URL}=;列表变量(@{变量名})用于存储有序集合,如@{USER_LIST}=user1user2user3;字典变量(&{变量名})用于存储键值对,如&{USER}=username=adminpassword=123。变量可通过AddScalar/List/Dict在测试套件中定义,或通过Variables关键字导入外部变量文件。数据驱动测试实现方式数据驱动测试通过TestTemplate关键字将测试用例抽象为模板,用例仅需提供参数即可复用相同流程。例如,定义“LoginToSystem”关键字作为模板,测试用例可简化为“admin123456”“userpass”等参数组合。支持从CSV、Excel文件读取测试数据,结合ExcelLibrary实现外部数据驱动。变量作用域与优先级变量作用域分为全局(整个项目)、套件(当前测试套件)和用例(单个测试用例),优先级从高到低为用例级>套件级>全局级。使用SetVariable关键字可在测试用例中动态修改变量值,通过ImportVariableFile导入外部变量文件时需注意路径正确,避免变量名冲突。报告生成与结果分析模块01自动生成多格式报告RobotFramework执行测试后,会自动生成HTML格式的测试报告(report.html)、详细日志(log.html)和XML输出文件(output.xml),无需额外配置即可获取测试结果概览与执行细节。02报告核心内容解析测试报告包含测试套件/用例的执行状态(通过/失败数)、耗时统计、关键步骤截图及断言结果;日志文件则记录每个关键字的执行过程、变量值及错误堆栈信息,支持快速定位问题。03结果分析与故障定位通过报告中的失败用例详情、关键字执行时序及截图,可直观分析失败原因。例如,Web测试中元素定位失败会在日志中标红显示具体定位表达式及页面源码片段,辅助快速排查问题。04CI/CD集成与报告共享支持将XML输出文件导入Jenkins、GitLabCI等持续集成平台,生成可视化趋势图表;HTML报告可直接分享给团队成员,便于协作分析测试结果,提升问题解决效率。环境搭建全流程03Python环境配置指南
Python下载与安装访问Python官方网站(/)下载Python3.6及以上版本,推荐3.8/3.9版本以获得更好兼容性。安装时勾选"AddPythontoPATH"选项,以便后续在命令行直接调用Python和pip工具。
环境变量验证安装完成后,打开命令行窗口,输入"python--version"(Windows)或"python3--version"(Mac/Linux)验证Python版本;输入"pip--version"或"pip3--version"验证pip是否可用。
国内镜像源配置(可选)为加速后续库安装,可配置国内镜像源,如清华大学源:pipconfigsetglobal.index-url/simple,或在安装命令后添加"-i/simple"临时使用。核心库安装命令详解
RobotFramework核心库安装通过pip命令安装RobotFramework核心框架:pipinstallrobotframework。该命令将安装框架基础功能,支持关键字驱动测试的核心运行环境。
Web自动化测试库安装安装Selenium2Library库用于Web应用测试:pipinstallrobotframework-selenium2library。该库提供浏览器操作、元素定位等Web自动化关键字。
API测试库安装安装RequestsLibrary库处理HTTP请求:pipinstallrobotframework-requests。支持RESTfulAPI的GET、POST等请求方法及响应断言。
数据库测试库安装安装DatabaseLibrary库实现数据库操作:pipinstallrobotframework-databaselibrary。可连接MySQL、Oracle等数据库,执行SQL查询与数据验证。
RIDE编辑器安装安装RIDE可视化编辑工具:pipinstallrobotframework-ride。需先安装依赖库wxPython:pipinstallwxPython,以支持图形界面运行。RIDE编辑器安装与配置
RIDE编辑器简介RIDE是RobotFramework官方推荐的图形化测试用例编辑器,支持测试套件、用例的可视化创建、编辑和执行,降低了上手难度,适合测试人员快速编写自动化测试脚本。
安装RIDE核心依赖通过pip命令安装wxPython(GUI库)和robotframework-ride包,推荐使用兼容版本组合,如Python3.8+搭配wxPython4.0.7.post2和robotframework-ride2.0.7,确保安装命令为:pipinstallwxPython==4.0.7.post2robotframework-ride==2.0.7。
解决安装常见问题若安装失败,可尝试安装psutil库(pipinstallpsutil)或升级预发行版本(pipinstall-U--prerobotframework-ride);若提示版本不兼容,需检查Python与wxPython版本匹配性,优先使用经过验证的版本组合。
启动RIDE与创建快捷方式安装完成后,可通过命令行执行ride.py启动,或创建桌面快捷方式,目标路径设置为Python安装目录下的python.exe,参数为"-c\"fromrobotideimportmain;main()\"",方便快速访问。浏览器驱动配置方法
驱动下载与版本匹配根据浏览器版本下载对应驱动,如Chrome浏览器需下载与版本号匹配的ChromeDriver,推荐通过国内镜像站点(如淘宝镜像)获取,确保驱动版本与浏览器大版本一致。
环境变量配置步骤将驱动文件解压后,放置在Python安装目录(如C:\\Python38)或系统PATH路径下;验证配置:命令行输入"chromedriver--version",显示版本信息即配置成功。
RIDE中的驱动调用验证在测试用例中使用"OpenBrowser"关键字并指定浏览器类型(如Chrome),执行后若成功启动浏览器,说明驱动配置正确;若提示驱动未找到,检查驱动路径是否已添加至环境变量。常见环境问题解决方案01RIDE启动失败或闪退错误现象:提示WrongwxPythonversion或启动后立即关闭。解决方法:修改testrunnerplugin.py文件,将latin1改为mbcs(约第565行);确保WxPython版本兼容,如Python3.7需搭配WxPython4.0.4。02浏览器驱动未找到错误现象:WebDriverException:'chromedriver'executableneedstobeinPATH。解决方法:下载与浏览器版本匹配的驱动(如ChromeDriver),放入Python安装目录或系统PATH路径。03依赖冲突场景:安装库时提示版本不兼容。解决方法:通过pipinstall库名==指定版本命令安装兼容版本,例如pipinstallrobotframework==3.1.2。04RIDE执行用例控制台乱码解决方案:修改Lib\\site-packages\\robotide\\contrib\\testrunner\\testrunnerplugin.py文件,将SYSTEM改成OUTPUT。05RIDE无快捷方式或点击无效解决方案:手动创建快捷方式,目标路径为Python安装路径+主函数调用,例如:C:\\Python38\\pythonw.exe-c"fromrobotideimportmain;main()"。RIDE界面操作实战04项目与测试套件创建
创建测试项目在RIDE中通过"File->NewProject"创建项目,Type选择"Directory"以支持多层级管理,Name填写项目名称,如"Web_Test_Project"。
创建测试套件右键项目选择"NewSuite",Type选择"File"类型以便直接创建测试用例,Name填写套件名称,如"Login_Test_Suite"。
导入测试库在测试套件的"Imports"标签页点击"AddImport",输入所需库名称(如"Selenium2Library"),黑色显示表示导入成功,红色则需检查库安装。测试用例编写界面详解
测试用例编辑区布局测试用例编辑区采用表格化结构,分为“Keyword”(关键字)和“Argument”(参数)两列,支持通过“AddRow”添加步骤行,关键字输入后自动识别并显示为蓝色(有效)或黑色(无效)。
关键字搜索与补全通过快捷键F5打开关键字搜索窗口,输入关键词可查询相关关键字用法及参数要求;使用Ctrl+Shift+空格实现关键字自动补全,提升编写效率。
测试用例设置区功能包含Documentation(用例描述)、Tags(标签分类)、Setup/Teardown(前置/后置操作)、Timeout(超时设置)等,支持用例元数据定义和执行控制。
变量与参数传递支持标量(${var})、列表(@{list})、字典(&{dict})等变量类型,可通过“AddScalar/List/Dict”定义内部变量,参数通过空格或制表符分隔传递给关键字。测试库导入与管理
测试库导入方式在测试套件的“Imports”标签页,点击“AddImport”并选择“Library”,输入库名称(如“SeleniumLibrary”)后点击确定。导入成功后库名显示为黑色,若为红色则表示导入失败,需检查库是否已正确安装。
常用测试库介绍Web自动化测试可导入“SeleniumLibrary”,用于浏览器操作;API测试可导入“RequestsLibrary”,处理HTTP请求;数据库测试可导入“DatabaseLibrary”,实现数据库连接与操作;移动端测试可导入“AppiumLibrary”,支持Android和iOS应用测试。
测试库管理要点确保导入的库名称与安装的库名完全一致(区分大小写)。通过“SearchKeywords”功能可查询库中可用关键字及其用法。对于自定义库,需将编写的Python文件导入到测试套件中,以便调用其中的自定义关键字。测试执行与结果查看
测试执行方式在RIDE中,可勾选目标测试用例,点击工具栏绿色运行按钮执行;也可通过命令行执行,如“robot--outputdir./results测试套件路径”实现批量运行。
执行结果反馈RIDE界面中,通过的测试用例显示绿色圆点,失败的显示红色×;执行后生成Output.xml、Log.html和Report.html三个文件,分别记录执行数据、详细过程和结果汇总。
测试报告解读Log.html记录关键字执行步骤、参数及结果,便于问题定位;Report.html展示测试套件/用例的执行状态、通过/失败数量及耗时统计,支持按标签等维度筛选查看。测试用例设计方法论05关键字驱动用例结构
测试用例基本组成RobotFramework测试用例采用表格化结构,主要包含Settings(设置)、Variables(变量)、TestCases(测试用例)和Keywords(关键字)四大核心区域,通过关键字组合实现测试步骤。关键字类型与调用关键字分为内置关键字(如Log、ShouldBeEqual)和自定义关键字。内置关键字可直接调用,自定义关键字需在***Keywords***区域定义后,在测试用例中通过名称调用,支持参数传递。用例执行流程控制通过TestSetup(用例前置操作)和TestTeardown(用例后置操作)定义每个测试用例的执行前后动作,如测试前打开浏览器、测试后清理数据,确保测试环境一致性。关键字参数传递方式关键字参数通过空格或竖线分隔,支持位置参数和命名参数。例如:InputTextid=usernameadmin,其中id=username为定位参数,admin为输入值参数,参数顺序需与关键字定义一致。变量定义与参数传递
变量类型与定义方式RobotFramework支持标量变量(${变量名})、列表变量(@{变量名})和字典变量(&{变量名})。可通过AddScalar、AddList、AddDict在测试套件或资源文件中定义,也可在测试用例中通过SetVariable等关键字动态创建。
变量作用域与优先级变量作用域分为全局(项目级)、套件级和用例级,优先级从高到低为:用例级变量>套件级变量>全局变量。通过Variables关键字导入的外部变量文件(如.py或.yaml)可实现跨套件变量共享。
参数传递与关键字调用自定义关键字通过[Arguments]标签声明参数,支持位置参数和默认值(如[Arguments]${username}${password}=123456)。调用时通过空格分隔参数,列表变量用@{list}传递,字典变量用&{dict}展开为键值对参数。
数据驱动测试中的参数应用结合TestTemplate关键字实现数据驱动,测试用例仅需按模板关键字参数顺序填写数据。例如,使用CSV/Excel文件存储多组测试数据,通过ExcelLibrary读取后传递给测试用例,实现批量执行不同输入场景。测试用例标签分类策略标签核心价值标签是RobotFramework中对测试用例进行分类和筛选的重要机制,支持按功能模块、测试类型、优先级等维度组织用例,实现精准执行与结果分析。常用标签体系推荐使用三级标签体系:一级标签(如Smoke/Regression)标识测试类型,二级标签(如Login/Payment)标识功能模块,三级标签(如High/Medium/Low)标识优先级。标签命名规范采用清晰易懂的命名规则,如使用"Smoke_Login"表示登录模块的冒烟测试,"Regression_Payment_High"表示支付模块的高优先级回归测试,避免使用模糊或过长的标签名。标签应用场景通过命令行参数"--includeSmoke"仅执行冒烟测试,"--excludeLow"排除低优先级用例,结合CI/CD流程实现测试用例的动态筛选与执行。Setup/Teardown机制应用Setup/Teardown层级划分RobotFramework支持四级Setup/Teardown:SuiteSetup(测试套件执行前)、SuiteTeardown(测试套件执行后)、TestSetup(测试用例执行前)、TestTeardown(测试用例执行后),实现测试流程的标准化管理。典型应用场景SuiteSetup可用于初始化测试环境(如数据库连接),TestSetup可执行前置操作(如用户登录),TestTeardown可完成用例清理(如关闭浏览器),SuiteTeardown可恢复环境(如断开数据库连接)。关键字配置示例在测试套件设置中配置:SuiteSetup设置为"Sleep|5sec"表示套件启动前等待5秒;TestTeardown设置为"CloseBrowser"确保每个用例执行后关闭浏览器,参数通过"|"分隔。执行逻辑与优势Setup/Teardown按层级自动执行,避免重复代码,提升用例可维护性。例如Web测试中,通过TestSetup统一打开浏览器,TestTeardown统一关闭,减少冗余步骤。数据驱动测试实现方法数据驱动测试概念数据驱动测试是一种测试方法,通过使用不同的输入数据执行相同的测试步骤,验证应用在各种数据场景下的表现,提高测试覆盖率和效率。测试模板设置在测试套件的Settings中设置TestTemplate,指定一个关键字作为该套件下所有测试用例的通用执行模板,测试用例只需提供关键字的参数数据。外部数据文件引入通过Variables标签导入CSV、Excel等外部数据文件,使用${变量名}引用数据。例如:ImportVariables../../data/test_data.csv,实现测试数据与用例分离。测试用例数据表格在测试用例中以表格形式组织多组输入数据和预期结果,每行数据对应一次测试执行。如登录测试可包含不同用户名密码组合及预期提示信息。Web自动化测试实战06SeleniumLibrary核心关键字浏览器操作关键字OpenBrowser:打开指定URL和浏览器,如"OpenBrowserchrome";CloseBrowser:关闭当前浏览器;MaximizeBrowserWindow:最大化浏览器窗口。元素定位与操作关键字InputText:通过id、name等定位方式输入文本,例"InputTextid=kwRobotFramework";ClickButton:点击按钮元素,如"ClickButtonid=su";ShouldBeEqualAsStrings:断言元素文本是否符合预期。等待与时间控制关键字Sleep:固定等待时间,如"Sleep2"表示等待2秒;WaitUntilElementIsVisible:等待元素可见后继续执行,避免因页面加载延迟导致元素定位失败。元素定位策略与实践
常用定位方式解析支持ID、Name、XPath、CSS等多种定位方式。ID和Name定位效率最高,适用于有唯一属性的元素;XPath通过层级关系定位,适用于复杂页面;CSS定位语法简洁,支持样式属性匹配。
XPath定位实战技巧使用相对路径定位,如"//div[@class='content']//input";结合文本内容定位,如"//button[text()='登录']";利用contains函数匹配部分属性值,如"//a[contains(@href,'logout')]"。
定位工具推荐浏览器开发者工具(F12)可直接获取元素XPath/CSS路径;Firebug插件支持元素实时定位与属性查看;SeleniumIDE录制功能可自动生成定位代码,辅助定位调试。
定位稳定性优化优先选择静态属性(如ID)避免动态属性;使用显式等待(WaitUntilElementIsVisible)替代固定等待;对易变元素采用相对定位结合部分匹配,提高脚本健壮性。百度搜索自动化案例
案例目标与场景本案例实现通过RobotFramework自动化打开百度首页,输入"自动化测试"关键词并执行搜索操作,验证浏览器操作及关键字驱动流程。
环境准备1.确保已安装SeleniumLibrary库:pipinstallrobotframework-seleniumlibrary;2.下载对应版本ChromeDriver并配置系统PATH;3.打开RIDE编辑器并创建测试项目。
测试用例编写步骤1.新建测试套件并导入SeleniumLibrary;2.创建测试用例,依次添加关键字:OpenBrowser(参数:,Chrome)、InputText(参数:id=kw,自动化测试)、ClickButton(参数:id=su)、Sleep(参数:2s)、CloseBrowser。
执行与结果验证点击RIDE工具栏运行按钮,观察浏览器自动打开百度、输入搜索词并提交,执行完成后生成log.html和report.html,通过报告确认用例执行状态及步骤详情。用户登录场景测试实现
测试用例设计设计登录成功、登录失败(如空用户名、错误密码等)场景的测试用例,明确每个用例的操作步骤和预期结果。
测试套件与用例创建在RIDE中新建测试套件和测试用例,导入SeleniumLibrary库,确保关键字可正常使用。
关键字调用与参数设置使用OpenBro
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋建筑工程检测方案
- 法治文化活动方案
- 游戏化学习理论与实践应用
- 建筑装饰工程合同模板
- 国防军工行业定期报告:首提航空航天为新兴支柱产业
- 2026全国高考体育单招考试语文试题试题(含答案)
- 2026海洋科普知识赛题历年真题试卷
- 2026年高考地理新高考二卷真题解析含答案
- 2025年民用核安全设备无损检验人员考试真题解析+答案
- 2026年安徽省宣城市重点学校小升初语文考试真题试卷(含答案)
- 《广西壮族自治区 农田建设项目预算定额及概算编制规程》
- 岫岩污泥干化项目可行性研究报告1130
- 招标代理机构遴选投标方案(技术标)
- TGXAS-成人急性中毒患者洗胃操作技术规范
- 民事起诉状诈骗范文
- 部编版八年级下册课外古诗李白《送友人》课件35张
- DL-T2528-2022电力储能基本术语
- DZ∕T 0214-2020 矿产地质勘查规范 铜、铅、锌、银、镍、钼(正式版)
- 《中电联团体标准-220kV变电站并联直流电源系统技术规范》
- 液氮库设计事故排风方案及措施
- 保洁外包服务合同-2024
评论
0/150
提交评论