




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2.1 VBScript在项目中的应用阶段要点 Option Explicit的使用。 VBScript基础知识解析。 10个在实际项目中常用的VBS函数。 类在VBS中的应用。 扩展内容:VBS的SendKeys方法。2.1.1 请培养代码规范的好习惯从第2章开始,读者要学习或者说积累的是更多实际项目中的经验和遇到各种项目时的不同的解决思路。由于QTP的脚本语言是基于VBS的,因此VBS对于学习自动化测试还是起到了相当大的作用,VBS作为QTP的官方脚本语言,则是我们在做项目时必不可免的要经常使用的。所以,作者将VBS的学习放在第2章的第1章节,旨在打开从QTP使用到
2、利用QTP做实际项目的这扇大门。首先,认识一下VBS,它又称VBScript,是Visual Basic Script的简称,即Visual Basic脚本语言。VBScript可以通过Windows脚本宿主调用COM,因而可以使用Windows操作系统中可以被使用的程序库,如可以使用Microsoft Office的库、WSH、AOM等。当然它也可以使用其他程序和操作系统本身的库。因此,学习VBScript对于测试人员来说非常重要。通常当学习一门编程语言时,第一句代码往往是变量申明,VBScript也是一样,一起来看一个最简单的实例。1定义变量Dim例如:Dim helloworl
3、d '定义变量helloworld = "QTP自动化测试技术领航" '给变量进行赋值msgbox helloworld '弹出消息框显示变量复制以上代码,在QTP中或另外保存为helloworld.vbs后直接运行,运行结果如图2-1所示。图2-1由于VBScript语法不是很严谨,因此,可以不用申明变量就可以直接使用,例如:helloworld = "QTP自动化测试技术领航" '给变量进行赋值
4、msgbox helloworld '弹出消息框显示变量这样就可以省去很多申明变量的时间,增加代码开发的速度,但是这样会有一个问题,来看以下这个脚本:helloworld = "QTP自动化测试技术领航" '给变量进行赋值msgbox helloword '弹出消息框显示变量保存以上脚本后运行,会发现弹出框并没有任何数据,而是一个空值,如图2-2所示。图2-2为什么会这样?因为在这里输入的helloworld被拼写成了helloword,少了一个小写“L”,因此才导致打
5、印出来一个空值。当我们在申明很多变量的时候很容易发生类似这种错误,因此,这里就要给代码中加上显示申明,这样才不会出现上述的这种情况,下面就来看一下具体怎么使用。2显示申明Option Explicit 强制所有变量必须先申明才能使用例如:Option Explicit '显示申明变量Dim helloworld '定义变量helloworld = "QTP自动化测试技术领航" '给变量进行赋值msgbox helloword
6、 '弹出消息框显示变量运行以上代码就可以直接定位问题,出现错误提示“变量未定义”,如图2-3所示。图2-3很多读者在写VBScript时,不喜欢使用显示申明。其实显示申明能够检查你的程序,建议大家能够养成这个好习惯。否则在大量的变量面前一定会束手无策,简单总结一下它的几个优点。 显示申明是脚本编写人员的一种好习惯。 可以防止很多不必要的错误发生,大型项目更加明显。 减少资源占用。 代码提示的优势 ,如图2-4所示。图2-4总结:作者在此只是举了一个Option Explicit的例子,其实在编写代码的时候,处处都应该注意代码规范和树立良好的习惯,比如多做一些注释等,这样对以后
7、的脚本维护是有很大的好处的。2.1.2 VBS基础知识提炼 VBS的基本语法1变量(1)所有单引号后面的内容都被解释为注释。(2)在VBScript中,变量的命名规则遵循标准的命名规则,需要注意的是:在VBScript中对变量、方法、函数和对象的引用是不区分大小写的。在申明变量时,要显式地申明一个变量,需要使用关键字Dim来告诉VBScript创建一个变量,并将变量名称跟在其后。申明多个同类型变量,可以用逗号分隔。注意:VBScript中不允许在申明变量的时候同时给变量赋值。但是允许在一行代码内同时对两个变量进行赋值,中间用冒号分隔。(3)VBScript
8、在定义时只有一种变量类型,在实际使用中需要使用类型转换函数来将变量转换成相应的变量类型。Cbool函数将变量转换成布尔值。Cbyte函数将变量转换为0255的整数。Ccur函数、Cdbl函数和Csng函数将变量转换为浮点数值,前者只精确到小数点后4位,后两者要更加精确,数值的范围也要大的多。Cdate函数将变量转换为日期值。Cint函数和Clng函数将变量转换为整数,后者的范围比前者要大的多。Cstr函数将变量转换为字符串。2数组数组的定义与变量非常类似,只需要在变量后描述这个数组的个数和维数。需要注意的是:数组在“定义”时下标是从1开始的,而在“访问”时下标总是从0开始,以数组定义中数值减一
9、结束。也就是说如果要定义一个有十个数据的数组,将这样书写代码:Dim array(10),同样,当你要访问第五个元素时,实际的代码是array(4)。当然,可以通过不指定数组的个数和维数来申明动态数组。等到数组的个数和维数固定后,使用关键字ReDim来改变数组。注意,在改变数组的大小时,数组的数据会被破坏,使用关键字preserve来保护数据。例如:ReDim“空格”preserve“空格”array“括号”个数“逗号”维数“括号”:ReDim preserve array (x , y )3操作符在VBScript运算符中,加减乘除
10、都是常用的符号,乘方使用的是?,取模使用的是Mod。在比较操作符中,等于、小于、大于、小于等于(<=)、大于等于(>=)都与常用的符号是一致的,而不等于是小于和大于连用(<>)。逻辑运算符为:“和”操作AND,“非”操作NOT,“或”操作OR。也可以使用操作符 + 和操作符&来连接字符串,一般使用&操作符;另外还有一个比较特殊的操作符Is用来比较对象,例如。按钮对象,如果对象是同一类型,结果就是真,如果对象不是同一类型,结果就是假。4条件语句主要有IfThen语句和Select Case语句两种形式在IfThen语句中,其基本形式
11、为:If 条件 Then 处理条件的语句End If基本形式只能对单个条件进行验证,如果有两个条件,则需要在基本形式中添加单行语句Else,如果还有更多的条件需要验证,则需要添加语句:ElseIf条件Then以及Else,如下:If 条件 Then 处理条件的语句ElseIf 条件 Then 处理条件的语句Else 处理
12、条件的语句End If在Select Case语句中,其基本形式为:Select Case 变量 Case 条件值 处理条件语句 Case 条件值 处理条件语句 Case Else 处理条件语句End Select注意
13、:在执行字符串比较时,需要特别注意大小写,一般情况下,在比较前,使用lCase函数将字符串转换成小写,使用uCase函数将字符串转换成大写。5循环控制语句循环控制语句共分ForNext循环、ForEach循环、DoWhile循环、DoUntil循环、While循环5种形式。在使用循环控制语句前,首先要对循环条件进行判断,如果循环次数是有固定次数的,那么使用ForNext循环,其结构为:For 计数器变量 = 开始计数值 To 最后计数值 执行循环体Ne
14、xt如果是需要对数组或对象集合中的每一个元素进行判断,则需要使用ForEach循环,其结构为:For Each 循环计数变量 In 要查看的对象或数组 执行处理语句Next注:在上述两种循环中随时可以使用Exit For来退出循环。如果希望在条件满足时执行一段代码则使用DoWhile语句,结构为:Do While 条件 执行循环体Loop如果希望在条件不满足时执行代码,则使用DoUntil语句,结
15、构为:Do Until 条件 执行循环体Loop注:在这两种循环语句中,是使用Exit Do来退出循环的。最后一种循环语句是条件满足时一直执行循环,如下:While 条件 执行循环体Wend 错误处理引发错误的原因有很多,例如,用户输入了错误类型的值,或者脚本找不到必需的文件或者目录等,可以使用循环技术来处理错误,但是VBS本身也提供了一些基本技术来进行错误的检测和处理。(1)最常见的错误是运行时错误,也就是说错误在脚本正在运行的时候发
16、生,是脚本试图进行非法操作的结果,例如,0被当作为除数。在VBS中,任何运行时错误都是严重的,此时,脚本将停止运行,并在屏幕上显示一个错误消息。可以在脚本的开头添加On Error Resume Next这行语句,它可以告诉VBS在运行时跳过发生错误的语句,紧接着执行跟在它后面的语句。这样,一旦发生错误时,该语句将会把相关的错误号、错误描述和相关源代码压入错误堆栈。(2)虽然On Error Resume Next语句可以防止VBS脚本在发生错误时停止运行,但是它并不能真正处理错误,要处理错误,需要在脚本中增加一些语句,用来检查错误条件,并在错误发生时处理它
17、。VBScript恰好提供了一个对象“err对象”,它有两个方法Clear、Raise,5个属性:description、helpcontext、helpfile、number、source、err对象不用引用实例,可以直接使用,例如:On Error Resume Next a = 5 b = 0 c = a / b If err.number <> 0 T
18、hen WScript.echo err.number &"/"& err.description &"/"& err.source End If执行一下该脚本,VBS会详细地报出错误信息,如图2-5所示。图2-52.1.3 常用函数解析Date 函数作用:返回当前系统日期。语法:Data。参数:无。示例:Dim MyDateMyDate = Date Msgbox
19、160;MyDate使用QTP执行以后的结果如图2-6所示。图2-6-函数实际项目臆测&点评-经常需要在自动化测试过程中写一些的测试执行Log,那么抓取时间的函数就相当有必要了,也可以用于错误截图时的后缀名。Now 函数作用:返回当前系统时间。语法:Now。参数:无。示例:Dim MyNowMyNow = Now Msgbox MyNow使用QTP执行以后的结果如图2-7所示。图2-7-函数实际项目臆测&点评-如果说写Log文件,更加推荐本函数,因为有具体的时间而不仅仅只有日期。如果作为错误截图,个人认为本函数相对就
20、比较不合适一些!毕竟我们都知道图片的文件名是不能有“:”这种字符的,即使最终去除了这些特殊字符,但是整体的表现力远不如前者,同时也会显得很繁琐!DateDiff 函数作用:返回两个日期之间的间隔。语法:DateDiff (interval, date1, date2)。参数。interval:通俗地讲它就是事先设一个时间比较单位,这个单位可以且只可以是表2-1中的单位。表2-1
21、160; 时间比较单位SettingDescriptionyyyyYearqQuartermMonthyDay of yeardDaywWeekdaywwWeek of yearhHournMinutesSecond注:参数只能设置成上表中左边这一栏的数据。date1:比较数据1。date2:比较数据2。示例:Dim tDateDiff,date1,date2date1 = Nowdate2 = DatetDateDiff =
22、;DateDiff("d",date1,date2)Msgbox tDateDiff使用QTP执行以后的结果如图2-8所示。图2-8注:返回0是正确的,因为两个Date之间的天数差异是0天,读者可以自行尝试其他参数。-函数实际项目臆测&点评-作者很兴奋地告诉读者,使用好这个函数,QTP一样能做一些简单的性能测试工作!毕竟,这个函数可以对比两个事务间的时间间距,而且可以精确到以秒为单位!Left 函数作用:返回字符串最左边的指定数量的字符。语法:Left (string, length)。参数。string:字符串表达式,其最左边的字符被返回。如
23、果string参数中包含Null,则返回Null。length:数值表达式,指明要返回的字符数目。如果是0,返回零长度字符串("");如果大于或等于string参数中的字符总数,则返回整个字符串。示例:Dim MyString, LeftStringMyString = "VBScript"LeftString = Left (MyString, 3)结果:最终应返回VBS-函数实际项目臆测&点评-如果读者需要某个字符串的指定几个字符时,就是使用该函数的时机!Righ
24、t 函数作用:返回字符串最右边的指定数量的字符。语法:Right(string, length)。参数。string:字符串表达式,其最右边的字符被返回。如果string参数中包含Null,则返回Null。length:数值表达式,指明要返回的字符数目。如果是0,返回零长度字符串("");如果大于或等于string参数中的字符总数,则返回整个字符串。示例:Dim MyString, RightStringMyString = "VBSCript"RightString = Right
25、 (MyString, 6)结果:最终应返回SCript区别在于一个从左到右,一个从右到左!Len 函数作用:返回字符串内字符的数目。语法:Len(string)。参数。string:任意有效的字符串表达式。如果string参数包含Null,则返回Null。示例:Dim MyStringMyString = Len (“VBScript”)最终应返回8-函数实际项目臆测&点评-往往用于对比两个字符串时的一些特殊业务需求,有时也可以用于代码调试。Mid 函数作用:从字符串中返回指定数目的字符。语法:Mid
26、(string, start, length)。参数。string:字符串表达式,从中返回字符。如果string包含Null,则返回Null。start:string中被提取的字符部分的开始位置。如果start超过了string中字符的数目,Mid将返回零长度字符串("")。length:要返回的字符数。如果省略或length超过文本的字符数(包括start处的字符),将返回字符串中从start到字符串结束的所有字符。示例:Dim MyVarMyVar = Mid ("VB script is
27、fun!", 4, 6) 结果:最终应返回script-函数实际项目臆测&点评-比Left和Right智能,它可以在任意位置获取,但是函数本身比较繁琐,建议只在Left和Right函数不能胜任时使用。Split 函数作用。在指定的分隔符参数出现的所有位置断开string对象,将其拆分为子字符串,然后以数组形式返回子字符串。语法:Split (expression, delimiter, count, compare)。参数。expression:主体字符串,也就是要被拆分处的字符或字符串。delimiter:拆分元素,默认是(&quo
28、t;?")。count:Number要放入数组中的项目数(可选)。compare:0是二进制比较,1是文本比较。0为缺省值。示例:Dim MyString, MyArray, MsgMyString = "VBscriptXisXfun!"MyArray = Split (MyString, "x", -1, 1)返回结果:' MyArray(0) = "VBscrpt".
29、9; MyArray(1) = "is".' MyArray(2) = "fun!".Msg = MyArray(0) & " " & MyArray(1)Msg = Msg & " " & MyArray(2)MsgBox Msg使用QTP执行
30、以后的结果如图2-9所示。图2-9-函数实际项目臆测&点评-在测试中经常获取到一个关键字符串后想去使用它,比如将获取到的一个关键信息写入日志,但如果该信息过于冗长或者有些字符串并不想使用它,完全可以使用Split函数来解决这类问题。LTrim、RTrim与Trim 函数作用:返回不带前导空格(LTrim)、后续空格(RTrim)或所有空格(Trim)的字符串副本。语法:LTrim(string)。RTrim(string)。Trim(string)。参数。string:任意有效的字符串表达式。如果string参数中包含Null,则返回Null。示例。Dim MyV
31、arMyVar = LTrim (" vbscript ") 'MyVar 包含 "vbscript "MyVar = RTrim (" vbscript ") 'MyVar 包含 " vb
32、script"MyVar = Trim (" vbscript ") 'MyVar 包含 "vbscript"-函数实际项目臆测&点评-假设我们要获取一个元素在页面上的值,然后使用这个值做一些检查和验证的判断。但是经常会遇到这样一个困扰,打个比方,我们从观察的角度上看(通过Msgbox的方法等),取到的值的确是“qtp”,然后写如下这段很简单的判断代码:If a =
33、60;"qtp" Then Reporter.ReportEvent micPass,"检查变量a的值","等于qtp"Else Reporter.ReportEvent micFail,"检查变量a的值","等于qtp"End
34、60;If但是最终验证失败了,为什么?相信软件测试中遇到过很多次类似的问题,其实QTP取下来的值多了一个空格,所以导致最后判断失败。遇到类似的情况,就完全可以用Trim来解决问题。Replace 函数作用:返回字符串,其中指定数目的某子字符串被替换为另一个子字符串。语法:Replace (expression, find, replacewith, compare, count, start)。参数。expression:必选项字符串表达式包含要替代的子字符串。find:必选项被搜索的子字符串。replacewith:必选
35、项用于替换的子字符串。start:可选项expression中开始搜索子字符串的位置。如果省略,默认值为1。在和count关联时必须用。count:可选项执行子字符串替换的数目。如果省略,默认值为-1,表示进行所有可能的替换。在和start关联时必须用。compare:可选项在计算子字符串时使用的比较类型的数值。有关数值如表2-2所示。如果省略,缺省值为0,这意味着必须进行二进制比较。表2-2
36、 有关数值常 数值描 述vbBinaryCompare0执行二进制比较vbTextCompare1执行文本比较Replace返回值如表2-3所示表2-3 Replace返回以下值If
37、Replace返回expression为零长度零长度字符串("")expression为Null错误find 为零长度expression的副本replacewith为零长度expression的副本,其中删除了所有由find参数指定的内容start > Len(expression)零长度字符串count为0expression的副本注:Replace函数的返回值是经过替换(从由start指定的位置开始到expression字符串的结尾)后的字符串,而不是原始字符串从开始至结尾的副本。示例:Dim MyStringMyStri
38、ng = Replace ("XXpXXPXXp", "p", "Y") '二进制比较从字符串左端开始。返回 "XXYXXPXXY"。-函数实际项目臆测&点评-部分特殊需求时使用。2.1.4 Function VS Sub终极角逐本小节就来介绍下VBS中函数的应用,并且此应用在平时编写公共函数库时经常会被使用到。下面介绍一下VBS中的两个函数。(1)Sub过程:Sub其实就是一个过程复用,没有返回值。详解:Sub过程是
39、包含在Sub和End Sub语句之间的一组VBScript语句,执行操作但不返回值。Sub过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果Sub过程无任何参数,则Sub语句必须包含空括号()。实例:Call QtpSub 调用SubSub QtpSub Msgbox "我是Sub"End Sub(2)Function 函数:Function是一个经常会用到的函数,可以有返回值,也有参数。详解:Function过程是包含在
40、Function和End Function语句之间的一组VBScript语句。Function过程与Sub过程类似,但是Function过程可以返回值。Function过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果Function过程无任何参数,则Function语句必须包含空括号()。Function过程通过函数名返回一个值,这个值是在过程的语句中赋给函数名的。Function返回值的数据类型总是Variant。实例:Dim myNamemyName = QtpFunction("QTP自动化测试技术领航")
41、0; '调用返回函数给变量Msgbox myNameFunction QtpFunction (tName) QtpFunction = tName '返回函数 End Function运行结果如图2-10所示。图2-10注意:在QTP中调用函数可以使用Call也可以不使用Call,但是一旦使用Call就需要有返回值,即需要给参数的外面增加一对括号。2.1.5 获取对象引用GetRef方法在本小节中,为读者简单介绍一下VBS中的函数指针,我们都
42、知道函数指针是程序算法的一部分,它和数组一样也需要占用一部分的存储空间,也都有相应的地址。不但可以使用指针变量指向数组的首地址,同样也可以使用指针指向函数代码的首地址,我们把指向函数代码首地址的指针变量称为函数指针。GetRef:它所提供的功能被称为函数指针,即它指向了在指定事件发生时要执行的过程的地址。实例:'变量强制申明 Option Explicit '定义变量 Dim new_helloworld '定义helloworld函数 Function helloworld (c
43、ontent) MsgBox content End Function '使变量new_helloworld指向helloworld函数 Set new_helloworld = GetRef("helloworld") 调用new_helloworldCall new_helloworld ("QTP自动化测试技术领航")上面这段代码是把变量new_helloworld的指针指向helloworld函数
44、,这样new_helloworld就具有了helloworld函数的功能,放到QTP中执行以后的结果如图2-11所示。图2-11如图2-11所示,指针成功指向了helloworld函数,并最终成功调用了MsgBox方法。2.1.6 类的简单应用“类”这个名词应该是不陌生的,但是很多自动化测试新人往往不知道,其实在VBScript中一样可以使用Class“类”!而且Class“类”在自动化测试中相当常用,对于代码量增大时,类的结构化就充分体现出了它强大的优势,下面就来看一下类的组成部分以及它们的一些用法。1初始化与终结化的应用Class User
45、160; Private Sub Class_Initialize '当这个类被创建时执行 End Sub Private Sub Class_Terminate '当类被销毁时执行 End Sub E
46、nd Class2Get与Set的应用Class User '*定义变量名* Private s_name Private s_age '*定义Get方法* Public Property Get name nam
47、e = s_name End Property Public Property Get age age = s_age End Property '*定义Set方法* Public Prope
48、rty Let name (new_name) s_name = new_name End Property Public Property Let age (new_age) s_age = new_age En
49、d Property End Class Set user1 = New user user1.age = "100" = "拉生" MsgBox "姓名:" ++ " 年龄:" +user1.age把以上这段代码放入QTP执行,结果如图2-12所示。图2-123函数的应用Cl
50、ass User Sub msgNow MsgBox now End Sub Function msgContent(content) MsgBox content End Function End Class Set user1
51、0;= New user user1.msgContent "当前何时?"user1.msgNow把以上这段代码放入QTP中执行,结果如图2-14和图2-13所示。图2-13图2-14总结:虽然Class很实用,但可惜的是在QTP中,目前还不支持Class的编辑,即无法“点”出Class。因此不得不通过其他工具编辑完毕以后再放入QTP中。2.1.7 VBS中SendKeys与项目结合的妙用这个小节主要是介绍一下如何使用VBS中的SendKeys命令(这个命令的作用就是模拟键盘操作,将一个或多个按键指令发送到指定Window
52、s窗口来控制应用程序运行),巧妙地使用它可以极大地方便我们的常用操作,其使用格式为。object.SendKeys string其中,“object”表示WshShell对象;“string”表示要发送的按键指令字符串,需要放在英文双引号中,而在按键指令字符串中通常又把它分为两类。1基本键。一般来说,要发送的按键指令都可以直接用该按键字符本身来表示,例如,要发送字母“q”,使用“WshShell.SendKeys "q"”即可。当然,也可直接发送多个按键指令,只需要将按键字符按顺序排列在一起即可,例如,要发送按键“qtp”,则可以使用“WshShell
53、.SendKeys "qtp"”来表示。2特殊功能键。对于需要与Shift、Ctrl、Alt?3个控制键组合的按键,SendKeys使用特殊字符来表示。 Shift:WshShell.SendKeys "+"。 Ctrl:WshShell.SendKeys ""。 Alt:WshShell.SendKeys "%"。由于“+”、“”这些字符用来表示特殊的控制按键了,那又如何表示这些按键呢? 很简单,只要用大括号括住这些字符即可,例如。要发送加号“+”,可使用“WshShell.SendKeys "+&qu
54、ot;”另外,对于一些不会生成字符的控制功能按键,也同样需要使用大括号,把按键的名称“括起来”,例如,要发送回车键,需要用“WshShell.SendKeys "ENTER"”表示,发送向下的方向键用“WshShell.SendKeys "DOWN"”表示,其他的比如。 Space:WshShell.SendKeys " "。 :WshShell.SendKeys "RIGHT"。 :WshShell.SendKeys "UP"。 F1:WshShell.SendKeys "F1&qu
55、ot;。注意:如果需要发送多个重复的单字母按键,不必重复输入该字母,SendKeys允许使用简化格式进行描述,使用格式为“按键 数字”。例如,要发送10个字母“q”,则输入“WshShell.SendKeys "q 10"”即可。大致的语法都已经了解了,其实其他的按键都是遵循这些法则的,接下来让我们来看看一些使用Sendkeys的实例。实例一:按F5键刷新桌面:Dim WshShell , Path , iSet WshShell = WScript.CreateObject(&qu
56、ot;WScript.Shell")WshShell.SendKeys "F5"实例二:自动重启电脑:Set WshShell = CreateObject("WScript.Shell")WshShell.SendKeys "ESCu"WshShell.SendKeys "R"实例三:启动任务管理器:Set WshShell = CreateObject("WScript.Shell")WshS
57、hell.SendKeys "+ESC"实例四:在记事本中输入“Happy Birthday!”字样并保存为birth.txt:Dim WshShellSet WshShell = WScript.CreateObject("WScript.Shell")WshShell.Run "notepad"WScript.Sleep 1500 wait 1.5 secondWshShell.AppActiva
58、te "无标题 - 记事本"WshShell.SendKeys "H"WScript.Sleep 500WshShell.SendKeys "a"WScript.Sleep 500WshShell.SendKeys "p"WScript.Sleep 500WshShell.SendKeys "p"WScript.Sleep 500WshShell.SendKeys "y"WScript.Sleep 500WshShell.SendKeys " "WScript.Sleep 500WshShell.SendKeys "B"WScript.Sleep 500WshShell.SendKeys "i"WScript.Sleep 500WshShell.SendKeys "r"WScript.Sleep
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度苗圃租赁与景观设计合同
- 2025年度钢筋加工配送及劳务管理合同
- 人工智能实验室房屋租赁合同
- 金属加工齐全设备租赁合同
- 绿色能源项目投资合同投资清洁能源项目
- 智能金融规划服务合同
- 2025-2030年中国平衡盘行业深度研究分析报告
- 简易入股合同协议书样本
- 常用保证担保借款合同模板大全
- 2025-2030年中国对夹式手动蝶阀行业深度研究分析报告
- 小学美术-湘美版四年级下册第10课中国龙教学设计学情分析教材分析课后反思
- 一年级下册劳技教案
- 部编版四年级语文下册第4单元大单元整体教学作业设计(教案配套)
- 大一逻辑学全部
- 游戏法缓解小班幼儿入园焦虑的个案研究
- 2023年包头轻工职业技术学院单招综合素质题库及答案解析
- 地下室顶板裂缝防水处理方案(完整资料)
- 宫颈锥切日间手术临床路径(妇科)及表单
- GB/T 23111-2008非自动衡器
- GB/T 18877-2020有机无机复混肥料
- GA/T 1073-2013生物样品血液、尿液中乙醇、甲醇、正丙醇、乙醛、丙酮、异丙醇和正丁醇的顶空-气相色谱检验方法
评论
0/150
提交评论