版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1、為什么要使用框架?框架是一組自動(dòng)化測(cè)試的規(guī)范、 測(cè)試腳本的基礎(chǔ)代碼,以及測(cè)試思想、慣例 的集合??捎糜跍p少冗余代碼、提高代碼生產(chǎn)率、提高代碼重用性和可維護(hù)性。例如QTestWare就是QTP自動(dòng)化測(cè)試框架中的一類(lèi)。2、SAFFRON介SAFFRON針對(duì) Webff發(fā)的一個(gè)簡(jiǎn)單的 QTPW試框架原型,是AdamGensler 于06年寫(xiě)的,需要QTP 9.1版本以上。完整的SAFFRON本代碼可到以下地址 獲取: cle&id=62:webqtp-saffron&catid=35:testing_is_believing3、如何使用SAFFRON?SAFFRON架以外部VBS
2、i:件的形式出現(xiàn),因此使用方法比較簡(jiǎn)單,直接在 測(cè)試腳本中以資源形式導(dǎo)入即可使用,如圖所示:導(dǎo)入后,可在"Available Keywords”視圖中看到SAFFRON所有函數(shù),如圖 所示:選中某個(gè)函數(shù),拖拽到專(zhuān)家視圖的編輯器中,如圖所示:后接一個(gè) URL地址,例如 ,即可使用SAFFRON框架中的BrowseTo函數(shù)導(dǎo)航到指定的URL地址,如下腳本所示:UR.lcthii 口OtVjj E*r W ft* ETId#yrtf1 F&±rd » 用5 日立UHwTrrtfX AltlVlAl jh* ka oSjat a - a/ / O ti ilrwM
3、T i- jT EnfoTstli ;沁yW+EBHl1 /*#|!打ij*if aMlf$ Xis£«<f / Uwk J iQtjftU / Wwt / 50x5+41、 / 九wMrka同。 i必 /工 Ltl f uac-li. q*i" Twl Sii,;DJ XJFll丁于二 rlg,?“ 二:':1II H_hi T«,n遞$BrowseTo(url)BrowseTo " 4、SAFFRON架代碼剖析為了深入了解SAFFRO用及框架的使用方法,下面我們將分別介紹SAFFRON 中的主要函數(shù),對(duì)SAFFRON碼進(jìn)行深入
4、剖析。4.1導(dǎo)航到指定URLSAFFRON用名為BrowseTo函數(shù)來(lái)負(fù)責(zé)導(dǎo)航到指定的URL如果瀏覽器尚未 啟動(dòng),則先調(diào)用函數(shù)Launch來(lái)打開(kāi)瀏覽器。BrowseTo函數(shù)的定義如下所示:Public Function BrowseTo (url)thirdlevel =""Report micPass, "Navigate to URL", "Navigating to URL: " & Quote (url)If initialized ThenExecute GenerateDescription("Brows
5、er")& "Navigate "& Quote(url)ElseLaunch "website", urlEnd IfReporter.Filter = rfDisableAllEnd Function在腳本中,會(huì)判斷是否初始化了瀏覽器,如果有則執(zhí)行導(dǎo)航動(dòng)作,導(dǎo)航到指 定的URL導(dǎo)航動(dòng)作是執(zhí)行這行腳本來(lái)完成的:Execute GenerateDescription("Browser") & "Navigate " & Quote(url)Execute是一個(gè)用于執(zhí)行指定
6、VBScript腳本語(yǔ)句的函數(shù),GenerateDescription函數(shù)的定義如下所示:'Generates a generic description based up on the "level" viarable'levelstr - will be one of the values that is in the level array'returns - string representative of the object hierarchyPublic Function GenerateDescription (levelstr)l
7、= IndexOf(level, levelstr)If l >=0 Thenfdesc = level(0) & "(" & Quote(desc(0) & ")."If l >= 1 Thenfdesc = fdesc + level(1) & "(" & Quote(desc(1) & ")."If 2 >= l ThenIf thirdlevel <> "" Thenfdesc = fdesc + level(
8、2) & "(" & Quote(desc(2) & "," & Quote("na me:=" & thirdlevel) & ")."End IfEnd IfEnd IfEnd IfGenerateDescription = fdescEnd Function4.2返回測(cè)試對(duì)象的描述GenerateDescription函數(shù)用于返回對(duì)象的描述性語(yǔ)句,例如,指定Browser,則返回如下語(yǔ)句:"Browser("micclass:=Browser
9、")."該語(yǔ)句代表了當(dāng)前瀏覽器對(duì)象,并且后面加了個(gè)點(diǎn)號(hào),這是為了方便后接 "Navigate "這個(gè)瀏覽器對(duì)象的導(dǎo)航操作,以及指定的URL字符串,例如"。在 Execute 時(shí),其實(shí)執(zhí)行的VBScript語(yǔ)句如下所示:Browser("micclass:=Browser").Navigate "經(jīng)過(guò)SAFFRON框架封裝后,則只需要使用如下語(yǔ)句即可達(dá)到同樣的效果:BrowseTo "4.3啟動(dòng)瀏覽器SAFFRON用名為BrowseTo函數(shù)來(lái)負(fù)責(zé)導(dǎo)航到指定的URL但是如果瀏覽器 未啟動(dòng),則會(huì)先調(diào)用函數(shù)Lau
10、nch來(lái)打開(kāi)瀏覽器。Launch函數(shù)的定義如下所示:prepares the framework for usage, and configures all internal frame work'variables and structures'apptype - used to launch different types of applications based'upon different technologies - currently there is only web'val - string that represents what to la
11、unch'returns - always returns truePublic Function Launch (apptype, val)If "website" = apptype Thenthirdlevel =""Report micPass, "Initialize", "Initializing Framework"level = split(webLevels, leveldelimiter, -1, 1)desc = split(webLevelsDesc, leveldescdelimi
12、ter, -1, 1)object = split(objects, objectdelimiter, -1, 1)objectDescription = split(objectsDescription, objectsDescriptiond elimiter, -1, 1)CloseBrowsersSet IE = CreateObject("InternetExplorer.Application")IE.visible = truelE.Navigate valWhile lE.Busywait 1WendEnd Ifinitialized = trueLaunc
13、h = trueEnd Function可看到腳本中創(chuàng)建了 IE的COM寸象,然后設(shè)置IE的Visible屬性設(shè)置為 Tue,讓瀏覽器可見(jiàn),然后調(diào)用IE對(duì)象的Navigate方法導(dǎo)航到指定的URL除 了創(chuàng)建IE的COM寸象外,在Launch函數(shù)中還進(jìn)行框架其它方面的初始化。4.4給指定字符串前后加雙引號(hào)在BrowseTo函數(shù)的定義腳本中,調(diào)用了一個(gè)名為Quote的函數(shù),該函數(shù)的定義如下所示:'generates a string with embedded/surrounding quotesPublic Function Quote (txt)Quote = chr(34) &
14、; txt & chr(34)End Function該函數(shù)的作用是給指定的字符串前后加上雙引號(hào)字符,例如下面代碼Msgbox "The message is " & Quote("hello world!")執(zhí)行結(jié)果顯示如圖所示。ThemsnovT' hdlo world!"如果我們不使用這個(gè)函數(shù),則需要這樣寫(xiě)我們的代碼來(lái)實(shí)現(xiàn)同樣的功能:Msgbox "The message is ""hello world!"""很明顯,這樣的寫(xiě)法寫(xiě)出來(lái)的代碼的可讀性和可維
15、護(hù)性都差一截。4.5點(diǎn)擊鏈接作為一個(gè)針對(duì)WEBZ用的腳本框架,除了能啟動(dòng)瀏覽器導(dǎo)航到指定的頁(yè)面外, 還需要針對(duì)頁(yè)面的各種元素進(jìn)行測(cè)試操作,例如鏈接的點(diǎn)擊、按鈕的點(diǎn)擊操作。 在SAFFRON架中,使用Activate函數(shù)來(lái)點(diǎn)擊鏈接、按鈕,其函數(shù)定義如下所 示:'Activates an object based upon its object type'objtype - the type of object should be limited to values in the object array'text - identifying text for the co
16、ntrol - for a link, it's thetext of the linkPublic Function Activate (objtype, text )localDesc =""If thirdlevel <> "" ThenlocalDesc = GenerateDescription(level (2)ElselocalDesc = GenerateDescription(level (1)End IfAutoSync()Select Case objtypeCase "Link"Execut
17、e localDesc & GenerateObjectDescription("Link","innertext: "& text ) & "Click"Report micPass, "Link Activation", "The Link "& Quote( text ) & "was clicked."Case "WebButton"Execute localDesc & GenerateObject
18、Description("WebButton", "value: ="& text ) & "Click"Report micPass, "WebButton Activation", "The WebButton "& Quote(text ) & " was clicked."End SelectEnd Function函數(shù)首先判斷對(duì)象的類(lèi)型,然后根據(jù)對(duì)象類(lèi)型分別處理,如果是鏈接對(duì)象, 則通過(guò)以下語(yǔ)句組合成可執(zhí)行的VBScript語(yǔ)句,然后
19、用Execute函數(shù)來(lái)執(zhí)行:Execute localDesc & GenerateObjectDescription("Link","innertext:=" & text) & "Click"如果是按鈕對(duì)象,則組合成:Execute localDesc & GenerateObjectDescription("WebButton", "value:=" & text) & "Click"在這里,調(diào)用了 GenerateObj
20、ectDescription 函數(shù),GenerateObjectDescription函數(shù)的作用與 GenerateDescription函數(shù)的作用類(lèi)似,都是用于返回一個(gè)測(cè)試對(duì)象的描述,不同的是 GenerateObjectDescription 函數(shù)需要傳入測(cè)試對(duì)象的描述數(shù)組,GenerateObjectDescription函數(shù)的定義如'Generates an object description based upon the object, and object Description arrays'obj - name of the object in the obj
21、ect array'prop - additional property to help uniquely identify the object'returns - a string representative of the object descriptionPublic Function GenerateObjectDescription (obj, prop)i = IndexOf(object, obj)ndesc =""If i <> -1 Thenndesc = obj & "("& Quote
22、(objectDescription(i) & ","& Quote(prop) & ")."End IfGenerateobjectDescription = ndescEnd Function有了 Activate函數(shù),我們?cè)趯?xiě)腳本的時(shí)候就可以充分利用,簡(jiǎn)化腳本的編 寫(xiě),例如下面是兩句簡(jiǎn)單的腳本,分別點(diǎn)擊頁(yè)面上的一個(gè)鏈接和一個(gè)按鈕:Activate "Link", "Person"Activate "WebButton", "Search"在Act
23、ivate函數(shù)中,調(diào)用了一個(gè)名為 AutoSync的函數(shù),該函數(shù)的作用與 QTP的Sync方法是一樣的,只是在外面封裝了一層,函數(shù)定義如下所示:'waits for the web page to finish loadingPublic Function AutoSyncExecute GenerateDescription("Browser") & "Sync"End FunctionAutoSync函數(shù)用于等待WEBS面加載完成。4.6 一個(gè)小例子到現(xiàn)在為止,我們可以使用 SAFFRON Launch、BrowserTo ft Ac
24、tivate 函 數(shù)來(lái)編寫(xiě)簡(jiǎn)單的腳本啟動(dòng)瀏覽器, 導(dǎo)航到指定的頁(yè)面,點(diǎn)擊鏈接和按鈕,例如下 面就是一個(gè)綜合了這幾個(gè)功能的腳本:?jiǎn)?dòng)瀏覽器Launch "website",":1080"'導(dǎo)航到 :1080/WebToursBrowseTo ":1080/WebTours/"點(diǎn)擊名為“ administration ”的鏈接Activate "Link","administration”該腳本調(diào)用SAFFRON
25、架的Launch函數(shù)啟動(dòng)IE瀏覽器,然后導(dǎo)航到http:/127.0.O1:1080/WebTours,點(diǎn)擊如圖所示的頁(yè)面中名為"administration"的鏈接。腳本的測(cè)試結(jié)果如圖所示4.7 檢查對(duì)象是否存在object前面的小例子僅僅實(shí)現(xiàn)了啟動(dòng)瀏覽器、 導(dǎo)航、點(diǎn)擊鏈接和按鈕的功能,如果 要組成一個(gè)完整的測(cè)試用例,還缺少一些東西,例如檢查指定的對(duì)象是否存在, 在SAFFRON,用Verify函數(shù)來(lái)實(shí)現(xiàn)這個(gè)功能,Verify函數(shù)的定義如下所示:Verify the Existence of anobjtype - values should be limited to
26、values in the object array'text - multi-purpose argument that indicates what to verify '-for a link, or button, it's the text of the control '-for a list, it's the name of the control '-for a frame, it's the name of the frame Public Function Verify (objtype, text) rval =
27、false localDesc ="" estr ="" If thirdlevel <>"" ThenlocalDesc = GenerateDescription(level(2)Else localDesc = GenerateDescription(level(1)End IfAutoSync()Select Case objtype Case "Page"Execute "rval = "& GenerateDescription(level( 1) & &
28、quot;Exist (0)”If rval ThenExecute "title = "& GenerateDescription(level( 1) & "GetROProperty("& Quote( "title" ) & ")"rval = trueElse rval = falseEnd IfEnd IfCase ”CurrentFrame""Then& localDescIf thirdlevel <> estr = "
29、rval = End IfLink" , "innCase "Link"estr = "rval = "& localDesc & GenerateObjectDescription(ertext尸"& text)Case "WebButton"estr = "rval = "& localDesc & GenerateObjectDescription("value尸"& text)Case "WebLis
30、t"estr = "rval = "& localDesc & GenerateObjectDescription(name:=" & text)Case "WebEdit"estr = "rval = "& localDesc & GenerateObjectDescription(name:=" & text)WebButton"WebList","WebEdit",End SelectExecute estr +
31、 "Exist (0)”End IfIf rval ThenReport micPass, objtype &" Verification" , "The " & objtype &" " & Quote(text) &" was verified to exist"ElseReport micFail, objtype &" Verification" , "The " & objtype &&quo
32、t; " & Quote(text) &" was not found"End IfIf "True" = rval Thenrval = TrueElserval = FalseEnd IfVerify = rvalEnd Function由于判斷不同對(duì)象的存在需要采用不同的屬性,因此 Verify函數(shù)中對(duì)不同 的對(duì)象類(lèi)型進(jìn)行判斷、分別處理。例如,對(duì)于 Link類(lèi)型的對(duì)象,用innertext 屬性,對(duì)于 WebButton,則采用value屬性,但是最后都需要組合成一條語(yǔ)句, 后接"Exist",通過(guò)Ex
33、ecute方法執(zhí)行這個(gè)語(yǔ)句,從而實(shí)現(xiàn)對(duì)象是否存在的判斷。對(duì)于頁(yè)面對(duì)象(Page)的存在性檢查有點(diǎn)不一樣,采用的是以下腳本:Case "Page"Execute "rval = "& GenerateDescription(level( 1) & "Exist (0)"Execute "title = "& GenerateDescription(level( 1) & "GetROProperty(" & Quote( "title"
34、) & ")"If title = text Thenrval = trueElserval = falseEnd IfEnd If通過(guò)GetROProperty方法獲取當(dāng)前頁(yè)面的title 屬性,然后與彳入的"text" 參數(shù)進(jìn)行比較,如果相等,則認(rèn)為頁(yè)面對(duì)象是存在的。在測(cè)試腳本中可以這樣使用 Verify函數(shù): 啟動(dòng)瀏覽器Launch "website" , ":1080"'導(dǎo)航至U " :1080/WebTours”Brow
35、seTo ":1080/WebTours/"If Verify ( "Link" , "administration" )= False then Reporter.ReportEvent micFail,"檢查鏈接","鏈接不存在"Else '點(diǎn)擊名為" administration ”的鏈接 Activate "Link" , "administration" End IF 腳本中先用Verify檢查名為
36、"administration"的鏈接對(duì)象是否存在,如果不存在則提示錯(cuò)誤,如果存在則進(jìn)一步調(diào)用Activate函數(shù)點(diǎn)擊鏈接。4.8 在文本框輸入字符串在SAFFRON,可以使用EnterTextIn 函數(shù)來(lái)給輸入框(WebEdit對(duì)象)輸入 字符串。EnterTextIn函數(shù)的定義如下所示:'Enters text into an edit field'objname - name of the control - use Object Spy if you don't kn ow what it is'text - the text to
37、enter into the controlPublic Function EnterTextIn (objname, text)localDesc =""rval = trueIf thirdlevel <>"" ThenlocalDesc = GenerateDescription(level(2)ElselocalDesc = GenerateDescription(level(1)End IfAutoSync()localDesc = localdesc & GenerateObjectDescription( "W
38、ebEdit" , "nam e:=" & objname)Execute localDesc & "Set (" & Quote(text) &")"Report micPass, "Enter Text" , "Text: "& Quote(text) &" was entered into "& Quote(objname)EnterTextIn = rvalEnd Function例如,如果我們要在如圖
39、所示的登錄界面中輸入用戶(hù)名和密碼,則可以使用SAFFRON EnterTextIn 函數(shù)來(lái)實(shí)現(xiàn)。測(cè)試腳本可以這樣編寫(xiě):輸入用戶(hù)名EnterTextIn "username","chennengji”輸入密碼EnterTextIn "password","123"4.9 讀取文本框的字符串在SAFFRON,可以使用EnterTextIn 函數(shù)來(lái)給輸入框(WebEdit對(duì)象)輸入 字符串。對(duì)應(yīng)的有一個(gè)名為GetTextFrom的函數(shù),用于讀取輸入框和文本列表的 字符串,GetTextFrom的定義如下所示:'Obtain
40、s text from a control'objtype - is the type of control the get the text from'objname - is the name of the control - use Object Spy if you d on't know the name'returns - the text of the controlPublic Function GetTextFrom (objtype, objname)text =localDesc =""If thirdlevel <
41、;>"" ThenlocalDesc = GenerateDescription(level(2)ElselocalDesc = GenerateDescription(level(1)End IfAutoSync()Select Case objtypeCase "WebEdit"Execute "text = "& localDesc & GenerateObjectDescription( "WebEdit" , "name:=" & objname) &am
42、p; "GetROProperty (" & Quote( "value" ) & ")"Case "WebList"Execute "text = "& localDesc & GenerateObjectDescription( "WebList" , "name:=" & objname) & "GetROProperty (" & Quote( "value&qu
43、ot; ) & ")"End SelectReport micPass, "Capture Text" , "Text: "& Quote(text) &" was captured from the control "& Quote(objname)GetTextFrom = textEnd Function假設(shè)我們需要讀取如圖所示的界面中的"Departure City"和"Arrival City" 這兩個(gè)文本列表(WebList對(duì)象)中
44、的字符串,則可以使用 GetTextFrom函數(shù)。測(cè)試腳本可以這樣編寫(xiě):獲取航班起始城市DepartureCity = GetTextFrom( "WebList","depart")獲取航班終點(diǎn)城市ArrivalCity = GetTextFrom( "WebList","arrive")當(dāng)然,也可以使用相同的函數(shù)來(lái)讀取文本框(WebEdit對(duì)象)的字符串,例如 下面的腳本讀取"NO. of Passengers"對(duì)應(yīng)的文本框中的字符串:'獲取乘客數(shù)量PassengerNumber =
45、 GetTextFrom( "WebEdit","numPassengers")4.10 選擇列表中的一項(xiàng)在SAFFRON,可以使用SelectFromList函數(shù)從下拉框列表(WebList對(duì)象) 中選擇指定的一項(xiàng)。SelectFromList的定義如下所示:'Selects a specific value from a listbox, or combobox'objname - name of the control - use Object Spy if you don't kn ow the name property
46、'text - the item in the combobox to selectPublic Function SelectFromList (objname, text)localDesc =""rv =""rval = falseIf thirdlevel <>"" ThenlocalDesc = GenerateDescription(level(2)Else localDesc = GenerateDescription(level(1)End If AutoSync() localDesc = loc
47、aldesc & GenerateObjectDescription( "WebList" , "nam e:=" & objname)Execute "cnt = "& localDesc & "GetROProperty(" & Quote( "items count" ) & ")"For i =1 to cntExecute "rv = "& localDesc & "Get
48、Item (" & i & ")"If rv = text Then rval = true End If Next If rval ThenExecute localDesc & "Select " & Quote(text)End IfIf rval ThenReport micPass, "WebList Selection" , "The WebList item "& Quote(text) &" was selected."E
49、lseReport micFail, "WebList Selection" , "The WebList item "& Quote(text) &" was NOT found."End IfSelectFromList = rvalEnd Function假設(shè)我們需要從如圖所示的界面中的"Departure City"的下拉框中選擇其中一項(xiàng),則可使用SelectFromList函數(shù)來(lái)實(shí)現(xiàn)。測(cè)試腳本可以這樣寫(xiě):'選擇航班起始城市為"San Francisco"Sele
50、ctFromList "depart","San Francisco4.11關(guān)閉瀏覽器We頃面測(cè)試的最后一個(gè)步驟一般都是關(guān)閉瀏覽器,在 SAFFRON,也把這 個(gè)過(guò)程封裝成了一個(gè)名為"CloseBrowsers"的函數(shù),該函數(shù)的定義如下:'close all opened browsersPublic Function CloseBrowsersIf Browser( "micclass:=Browser" ).Exist (0) ThenBrowser( "micclass:=Browser"
51、).CloseEnd IfWhile Browser( "micclass:=Browser" , "index:=1" ).Exist (0)Browser( "index:=1" ).CloseWendIf Browser( "micclass:=Browser" ).Exist (0) ThenBrowser( "micclass:=Browser" ).CloseEnd IfEnd FunctionCloseBrowsers函數(shù)會(huì)把當(dāng)前所有打開(kāi)的瀏覽器都關(guān)閉,腳本中采用描述性編程的方式獲
52、取所有對(duì)象類(lèi)型為“Browser”的測(cè)試對(duì)象,然后循環(huán)逐個(gè)關(guān)閉所有 這種類(lèi)型的測(cè)試對(duì)象。5、對(duì)SAFFRON架進(jìn)行擴(kuò)展SAFFRON一個(gè)基本的框架,它封裝了瀏覽器的相關(guān)測(cè)試操作、封裝了一些 基本對(duì)象的測(cè)試操作,例如 Link、WebButton、WebEdit、WebList等控件,可用 于基本的WEEK面的測(cè)試,并且簡(jiǎn)化了測(cè)試腳本的編寫(xiě),可以讓代碼的可讀性和 可維護(hù)性得到增強(qiáng)。但是SAFFRON僅是一個(gè)基礎(chǔ)框架,我們還需要進(jìn)一步地對(duì)其擴(kuò)展才能應(yīng)用 到實(shí)際的WEB1動(dòng)化測(cè)試項(xiàng)目中去,例如擴(kuò)展對(duì)更多的控件的支持。下面是一個(gè) 對(duì)Activate函數(shù)擴(kuò)展Image對(duì)象的點(diǎn)擊操作的過(guò)程:(1)首先打開(kāi)
53、SAFFRON架的VBS文件,找到開(kāi)頭的變量定義處,添加Image 對(duì)象,讓框架可以識(shí)別和支持Image對(duì)象:'擴(kuò)展對(duì)Image對(duì)象的支持objects = "Link|WebButton|WebList|WebEdit|Image"objectsDescription ="micclass:=Link|micclass:=WebButton|micclass:=WebList|micclass:=WebEd it|micclass:=Image”(2)修改Activate方法,添加對(duì)Image對(duì)象的Click操作的支持,腳本修改 成如下所示:'A
54、ctivates an object based upon its object type'objtype - the type of object should be limited to values in the object array'text - identifying text for the control - for a link, it's the text of the linkPublic Function Activate (objtype, text)localDesc =""If thirdlevel <>"" ThenlocalDesc = GenerateDescription(level(2)ElselocalDesc = GenerateDescription(level(1)End IfAutoSync()Select Case objtypeCase "Link"Execute localDesc & GenerateObjectDescription( "Link" , "innertext:= "& text) & "Click"Repor
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 詩(shī)詞創(chuàng)作與鑒賞課程設(shè)計(jì)
- 2024年深溝球軸承塑料保持架項(xiàng)目可行性研究報(bào)告
- 輕食餐制作課程設(shè)計(jì)
- 銨鹽的性質(zhì)課程設(shè)計(jì)
- 環(huán)球動(dòng)物大集合課程設(shè)計(jì)
- 2024年單級(jí)18牙項(xiàng)目可行性研究報(bào)告
- 2024至2030年中國(guó)印花平絨布行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 2024年中國(guó)超五類(lèi)室外阻隔水電纜市場(chǎng)調(diào)查研究報(bào)告
- 中國(guó)釓鐵合金行業(yè)市場(chǎng)現(xiàn)狀分析及競(jìng)爭(zhēng)格局與投資發(fā)展研究報(bào)告(2024-2030版)
- 中國(guó)酸霧吸收器行業(yè)市場(chǎng)現(xiàn)狀分析及競(jìng)爭(zhēng)格局與投資發(fā)展研究報(bào)告(2024-2030版)
- 北京市商業(yè)地產(chǎn)市場(chǎng)細(xì)分研究
- 2023-2024學(xué)年重慶市大足區(qū)八年級(jí)(上)期末數(shù)學(xué)試卷(含解析)
- 肺結(jié)節(jié)科普知識(shí)宣講
- 網(wǎng)絡(luò)直播營(yíng)銷(xiāo)
- 2024年節(jié)能減排培訓(xùn)資料
- 2024傳染病預(yù)防ppt課件完整版
- 2024年華融實(shí)業(yè)投資管理有限公司招聘筆試參考題庫(kù)含答案解析
- 2024年1月普通高等學(xué)校招生全國(guó)統(tǒng)一考試適應(yīng)性測(cè)試(九省聯(lián)考)歷史試題(適用地區(qū):貴州)含解析
- 《寬容待人 正確交往》班會(huì)課件
- HSK五級(jí)必過(guò)考前輔導(dǎo)課件
- 小兒胃腸功能紊亂護(hù)理查房課件
評(píng)論
0/150
提交評(píng)論