




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Selenium1SeleniumSelenium是ThroughtWorks公司一個強大的開源Web功能測試工具系列,本系列4款:1.SeleniumCore:支持DHTML的測試案例(效果類似數據驅動測試),它是SeleniumIDESeleniumRC的引擎。2.SeleniumIDE:FireFoxSeleniumRC:SeleniumRemoteControl。后續的系列文章我會主要針對SeleniumRC展開介紹。SeleniumGrid:允許同時并行地、在不同的環境上運行多個測試任務,極大地加快Web應用的功能測試。既然Selenium4款這么多,那到底如何選擇呢??我從"Selenium官網"Selenium SeleniumCore僅需要安否否是否支持是是是是是是否是需要否是否否將保存到磁是是否是僅僅僅這里沒有介這里沒有介紹SeleniumGrid,但介紹了另外一個SeleniumCoreHTA,SeleniumCoreHTA其實是SeleniumCore的額外模式,你只要SeleniumCore配置稍加修改,即為HTA模式,SeleniumCoreHTA可以在IE最高安全等級( 這意味著它僅能在IE下工作,由于限制較大,下面將排除對SeleniumCoreHTA的(1).SeleniumIDE僅可以在Firefox(2).SeleniumRemoteControlsafari等N(3).SeleniumCore支持的瀏覽器是最廣的,這點和它的實現有關。作為IDERC的引擎,SeleniumCore 這里只有SeleniumCore需要,這是出于同源策略的原因。這也是SeleniumCore一個很大的限制,試問,如果你要測試 上裝一個SeleniumCore,那是多搞笑的一件事。而SeleniumIDE和SeleniumCoreHTA不會被同源策略所限制,因為他們對瀏SeleniumRC提供一個代碼服務器來保證SeleniumJS文件看似來自相同的遠 這里不說了,都支持。SeleniumRC在“是”后面加*因為它是在最近版本支持的,Java:準確的說是需要這項只有SeleniumRC需要,上面2中所說的“ 服務器”是一個Java程序, 只有SeleniumCore不能將任何寫到磁盤上(因為它是用javascript寫的,它不允許向磁盤寫數據),其解決方案是當然你可以將發送到另外一臺服務器保存。這也是SeleniumCore的一大限制。(1).SeleniumIDE僅支持Selenium(3).SeleniumCore也是僅支持Selenium 工具(如:FirefoxIDE,SeleniumCore等),不懂程序的測試人員它的缺點是:Selenese有一些嚴格的限制:它沒有條件(沒有"if"表達式),并且它 (1).SeleniumIDE支持并且只支持Firefox瀏覽器,支持的瀏覽器太少,而依附于Firefox也不便于日后開展自動化測試,但是,它的錄制快捷好用!并且有代碼轉換功能,可以把Selenium語言測試案例轉為C#,Java等語言的測試案例,我建議使用SeleniumIDE+FireBug進 再調用SeleniumRC運 (2).SeleniumCore,它的優點是編寫測試案例簡單,并且支持絕大多數的瀏覽器,但缺點也同樣明顯,SeleniumCore需要 安裝,Selenese語言也限制了復試工具不可能100%滿足你測試需求的,當它不能滿足你測試需求時候,它必須有一(3).SeleniumRC是我推薦使用的工具,它支持很多瀏覽器,可以使用C#,Java SeleniumRC作為默認的測試工具。Selenium2XPath在編寫Selenium案例時,少不免是要用到XPath的,現在外面關于XPath使用的參考資料很多,下面我直接轉一篇關于XPath使用的文檔。如果對XPath不熟悉請參考 搜索關于XPath的資料,因為下面的內容已經足夠你寫測試時使用,如果你已熟悉XPath,本章大可忽略跳過。 自 XPath是XML的查詢語言,和SQL的角色很類似。以下面XML為例,介紹<?xmlversion="1.0"encoding="ISO-8859-<cd<title>Empire >Bob <cd<title>Hideyour >Bonnie <cd<title>Greatest >Dolly 方式。不過XPath是一種模式(Pattern),可以選出XML中,路徑符合某個模式的所有節點出來。例如要選catalog的cd中所有price元素可以用:如果XPath的開頭是一個斜線(/)代表這是絕對路徑。如果開頭是兩個斜線(//)來。以下的語選出文件中所有叫做cd的元素(在樹中的任何層級都會被選來以下的語選出所有catalog的子元素中,包含有price作為子元素的元素以下的語選出有兩層父節點,叫做price的所有元素使用中括號可以選擇分支。以下的語法從catalog的子元素中取出第一個叫做cd以下語法選擇catalog中的最后一個cd元素:(XPathjfirst()這種函式喔,用上例的[1]就可以取出第一個元素。以下語法選出含有price子元素的所有/catalog/cd以下語法選出price10.90的所有/catalog/cd以下語法選出price10.90的所有/catalog/cd元素的price/catalog/cd/title|選擇所有title以及元//title|選擇所有title以及以及price元//title|//|在XPath中,除了選擇元素以外,也可以選擇屬性。屬性都是以@開頭。例如選擇文件中所有叫做country的屬性。選擇所有含有country這個屬性的cd以下語法選擇出含有屬性的所有cd以下語法選擇出country屬性值為UK的cdSelenium3SeleniumAPI大家在編寫測試案例想查閱大家在編寫測試案例想查閱SeleniumAPI(注:這里API版本比較老,新版本的Selenium的API在這里不一定能找到。SeleniumAPI說明文檔)(ElementHTML11ElementLocators)idlocatorHTMLidnamelocatorHTMLnameidentifierlocatorHTMLid的元素,domlocator用JavaScriptHTML中的元素, xpathlocatorXPathHTML中的元素,xpath=//img[@alt='Theimagealtlinklocator用linkHTMLlink=ThelinklocatorWithoutalocatorprefixSelenium22StringMatchingPatterns在沒有指定字符串匹配前序的時候,seleniumgolb匹配33SelectOptionSpecifiersSelect例如:id=option1Actionaction和actionAndWait,action作出等待,open如果是需要經過JavaScript的alert或 verify或assertSeleniumJohne----ee-JavaScripttrue值,超時則停 dJavaScript表達式賦值給變MrJohn$.{title}$.{firstname}-當下次JavaScript彈出 框的時候,讓selenium選--AssertVerify,當assertLocation,assertTitleassertLocation,assertTitleeneMyMyinputJohneJohnassertSelected,assertSelectedOptionsassertSelected,assertSelectedOptionsJohndd sltlYouarenowloggedtYouarenowloggedtassertTextPresent,etc.assertTextPresent,etc. tablecellcellAddresstableName.row.column,注意行列序號都是0開始deassertVisible,nonVisibleassertVisible,nonVisible隱藏一個元素可以用設置css的'visibility'屬性為'hidden',也可以 Editable,non-editableEditable,non-editablee-JavaScriptmessage的框alert時會產生與手動點擊'OK'按鈕一樣的效果。如果一個alert產生了,而你卻沒有去檢查它,seleniumaction中-注意:Selenium不支持JavaScript在 時調JavaScriptmessage的框和alert情況一樣 默認情況下,Seleniumconfirm()返回true, 框 檢查JavaScript是否有產生帶指定message的 你檢查的prompt的順序 --個actionDelegatetoStore,storeValuestoreTextVariableVariableSubstitution變量,$.{title}Fullnameis:javascriptjavascript.{'with'Selenium4SeleniumIDE前前 ,SeleniumIDE是Firefox的一個插件,是可以進換,所以SeleniumIDE+Firebug會成為你日后寫測試案例的兩大助手(IE用SeleniumCore+IEDevelperToolBar)Selenium::1.SeleniumIDE,Firebug2.Selenium 框上圖標明了一些SeleniumIDE的主要功能。其中,由Command,Target,Value組成的表格就是 都是由一條一條的Action(行為)組成,而每個Action又由(Command,Target,Value)三者組成。Command就是上文《API參考手冊》提到的內容,Target指的是Web中的某個對象,比如:文字,輸入框等等,如果選取對象呢?呵呵,這里就用到了XPath,不熟悉可以參考《XPath的使用》,而Value就是這個對象的值。當彈出上面的IDE窗口后,我們就可以開始Selenium的 紅色的圓點,當它下按時(如上圖)就表示IDE正在進行 制的時候,直接操作Firefox瀏覽器窗口就可以了,IDE會自動記錄你的操作的,下面 (4).進入搜索結果頁面后,右鍵單擊第一條記錄(即:hyddd博客園),在右鍵彈出菜單中,單擊“VerifyTestPersenthyddd-博客園”。(5).單擊第一條記錄(即:進入hyddd-博客園(6).Firefox彈出一個新TabOKSeleniumIDE錄制的結果吧上圖中,中間的表格就是錄制的結果,你可以按“運行”重新回放看看,值得注意的是,在運行時,Firefox可能會認為中最后一個操作(6)為非Firefox,具置是: bar->Tools->options->content->Blockpop-upWindow,你可以把鉤去掉或者在Exceptions里面添加相應的 恩,到此為止 在運行后,你會發現IDE表格的顏色發生了變化,運行前,表格為白色,-博客園”判斷結果為false,這種情況案例還是會繼續執行下去,判斷 SeleniumIDE本文開始時提到了,SeleniumIDE還有一個重要的功能就是把 SeleniumIDE可以把HTML的 轉為C#,JAVA等等其他語言的 們日后寫SeleniumRC的測試案例提供了極大的方便。Selenium5SeleniumRC《Selenium,SeleniumRC如:C#,PythonPython1000SeleniumRC:SeleniumRC上一篇《SeleniumIDESeleniumIDE可以把錄制的轉為其他語言的,所以我繼續用上一篇的為例子,下面是把語言轉換為C#后的代碼:usingSystem;usingSystem.Text;usingSystem.Text.RegularExpressions;usingSystem.Threading;usingusingnamespace{publicclass{privateISeleniumprivateStringBuilderpublicvoid{selenium=newDefaultSelenium("localhost",4444,"*chrome","verificationErrors=new}publicvoid{{}catch{//Ignoreerrorsifunabletoclose}Assert.AreEqual("",}publicvoid{selenium.Type("kw","hyddd");{Assert.IsTrue(selenium.IsTextPresent("hyddd}catch(AssertionException{}}}}TestProject(ConsoleApplicationTest把selenium-dotnet--driver-1.0-beta-2 ThoughtWorks.Selenium.UnitTests.dll加入項目:usingSystem;usingusingusing.VisualStudio.TestTools.UnitTesting;usingSelenium;namespace{publicclass{publicvoid{ ISeleniumselenium=newDefaultSelenium("",4444,"*iexplore","selenium.Type("kw","hyddd");Assert.IsTrue(selenium.IsTextPresent("hyddd-博}}} -jarselenium-server.jar”(JRE),Selenium運試案(1).運試案例(2).PassErrorMeesage(注意:和Firefox一樣,IE下也有彈出網頁功能,修改設置方法:Bar->Tools->PopupBlocker->TurnoffPopupBlocker,或PopupBlockerSettingsSelenium6--SeleniumRC工作原前一篇已經比較詳細講述了如何使用前一篇已經比較詳細講述了如何使用SeleniumRC進行WebSeleniumRC是什么?一.SeleniumRCSeleniumRC(1).SeleniumSeleniumServer負責控制瀏覽器行為,總的來說,SeleniumServer主要包括3 ,SeleniumCore。其中SeleniumCore是被SeleniumServer嵌入到瀏覽器頁面中的。其實SeleniumCore就是一堆JS函數的集合,就是通過這些JS函數,我們才可以實現用程序對瀏覽器進行操作。寫測試案例時用來控制SeleniumServer Lib的接口向SeleniumServer發送Http請求,要求和SeleniumServer建立連接。為什么要通過發送Http請求控制SeleniumServer以看出,SeleniumServer是一個獨立的中間服務器(確切地說是服務器),它可以架設在其他機器上!所以測試案例通過發送HTTP請求去控制SeleniumServer(2).SeleniumServer的Launcher啟動瀏覽器,把SeleniumCore加載入瀏覽器 設置為SeleniumServer的Http Lib的接口向SeleniumServer發送HttpSeleniumServer對請求進行解析,然后通過 發送JS命令通(5).瀏覽器收到新的頁面請求信息(因為在(4)中,SeleniumCore的操作可能的頁面請求),于是發送Http請求,請求新的Web頁面。由于SeleniumServer在啟動瀏覽器時做了手腳,所以SeleniumServer新(6).SeleniumServer接收到瀏覽器的發送的Http請求后,自己重組Http取對應的Web(7).SeleniumServer的把接收的Web為什么SeleniumRC中的SeleniumServer下一篇繼續介紹Selenium7--SeleniumRC工作原繼續前一篇的問題,為什繼續前一篇的問題,為什么SeleniumRC中的SeleniumServer需要以這種代理服務器的形式存在?其實,這和瀏覽器的“同源策略”(TheSameOrigin 同源策略,它是由假設現在沒有同源策略,會發生什么事情呢?大家知道,JavaScript可以做很多東 /修改網頁中某個值。恩,你現在打開了瀏覽器,在一個tab窗口中打 ,在另外一個tab窗口中打開了一個 的專門修改銀行信息的JavaScript,當你 時,你的銀行頁面就會被這個JavaScript并且執行它比如說,瀏覽器的兩個tab頁中分別打開了ht /index.html和 /index.html,其中,JavaScript1和JavaScript3是屬 ,而JavaScript2是屬于谷歌的 ,當瀏覽器的tab1要運行一個 、協議、端口相同。所以,tab1只能執行JavaScript1和 ,而JavaScript2不能執行,從而防止其他網頁對本網頁的 二.SeleniumServer為什么以這 上面說了同源策略,那同源策略的SeleniumServer有什么關系呢??呵呵,上一篇,SeleniumCore是一堆JS函數的集合,它是我們操作瀏覽器的基礎。當因為SeleniumCore的JS的“源”是localhost,所以瀏覽器會SeleniumCore的JS在測試頁面上執行,這就是為什么在本系列第一篇中說,如果只使用SeleniumCore進試,需要把SeleniumCore安裝到服務器上。為了解決上面這個問題,SeleniumRC中的SeleniumServer就以 SeleniumServer 的形式存在,通過修改WebSite的源信息,從而達瀏覽器的目的,就這樣,SeleniumRC就輕松繞過了同源策略。在上圖中,瀏覽器會認為WebSite和SeleniumCore來自同一個“源”---- Selenium8玩轉Selenium本篇主要是想更進一步介紹本篇主要是想更進一步介紹SeleniumServerSeleniumServer的交互模式在《第一個SeleniumRC測試案例》中,我們以命令“java-jarselenium-server.jar”啟動了SeleniumServer,其實在啟動SeleniumServer時,我們還可以加上各種參數(具體的參數請參考《SeleniumRC服務器命令行參數列表》),而開啟SeleniumServer交互模式 令為“java-jarselenium-server.jar- ctive”。交互模式,是SeleniumServer提供的一種快速的測試方法,你可以對SeleniumServer輸入命令從而直接啟動測試。.comSeleniumServer啟動瀏覽器,以及創建Session(1).--->Requesting看過《深入了解SeleniumRC工作原理(1)》的應該了解:我們所編寫的測試案例,其實是通過發送Http請求實現對SeleniumServer的控制,而測試案例所發送的請求就正是:--->Requesting,回車!看,SeleniumServer又為此產生了一個Session了!呵呵(2).這里,SeleniumServer為上面的請求隨機生成了一個SessionID:SeleniumServer,所以這里和上圖的SessionID不同,并且下文會繼續使用SessionID:9505f5f8c52041c28f4cdc1f8e59f769)。(3).如果一切正常,SeleniumServer最后會出現GetResultOk的字樣,并出現 噢,瀏覽器成 (1).在SeleniumServermand&1=Target&2=Value&SessionID=…SeleniumIDE的案例語句很像。"*iexplore","*iexplore",ISeleniumselenium=(2).在輸入命令后,SeleniumServer會發條Http請求給自己,請求的URL格式 ,我們完全可以用瀏覽器發送請求控制SeleniumServer 試(3).另外,sessionId是很重要的一個參數,當一個SeleniumServer同時運行多個測試案例時,SeleniumServer就是通過sessionId判斷到底該操作哪個瀏覽器窗口。而在下面的C#代碼中:ISeleniumselenium=newDefaultSelenium("",4444,"*iexplore","htt selenium就相當于上文中的sessionId(4).在SeleniumServer啟動一個Session“源”(原因見《深入了解SeleniumRC工作原理(2)》),在上面的代碼中httSeleniumSeleniumServer提示說;如果測試案例是運行在*iehta或者*chrome上,或者改變SeleniumServer的運行模式為 injectionmode即可避免問題出現。恩,在這里,我不得不承認之前在《深入了解SeleniumRC工作原理(1)》中,為其實,SeleniumServer2就可能會出現各種問題,故此SeleniumServer我們在啟動Session時,定義了源為中,我們打開的卻是(1).HeightenedPrivileges現在SeleniumServer啟動的默認模式為:HeightenedPrivilegesBrowsers。如 Injection模式,可以加參數“- 《深入了解SeleniumRC工作原理(1)》中介紹SeleniumRC與Testcase關系, Injection的工作模式,因為我個人認為 Injection模式作介紹。在這里我補充說明一下,為什么HeightenedPrivilegesBrowsers模式不能避免上面的問題。先看看SeleniumServer在HeightenedPrivilegesBrowsers模式下的工作流程圖: Injection模式不一樣,在HeightenedPrivilegesBrowsers模式下,Browser對Web的請求沒有經過Http ,所以返回的Web頁面就有可能和SeleniumCore不同源了(一般的情況下,Open都應該只獲取“源”下的某個子頁面,用Open獲取其他“源”的頁面在測試中應該是極少數的,因為在這種情況下,我們還應該再new一個新的ISeleniumselenium進行處理,雖然用Open獲取其他“源”的頁 Inj
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 季度論壇比賽活動方案
- 學校快樂套餐活動方案
- 學習宣講活動方案
- 好人教育活動方案
- 學校影院活動方案
- 學校灑水活動方案
- 女性銀行活動方案
- 婦女議事活動方案
- 好人事跡宣傳活動方案
- 學創部活動比賽活動方案
- 九師聯盟2024-2025學年高二下學期6月摸底聯考語文試題(含答案)
- 廣東省深圳市南山區2025年小升初數學模擬試卷含解析
- 國家開放大學《Web開發基礎》形考任務實驗1-5參考答案
- GB/T 620-2011化學試劑氫氟酸
- 大班社會《愛發脾氣的菲菲》課件
- 公路工程項目代建制管理辦法(218頁編制詳細)
- 【海外華文文學】期末考試復習提綱
- 化工進展稿件編輯、排版體例格式
- 美麗鄉村片區內監理規劃范本
- 曉明煤礦副井過卷緩沖裝置安裝措施
- 燃料油 MSDS(化學品安全技術說明書)
評論
0/150
提交評論