




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Selenium1SeleniumSelenium是ThroughtWorks公司一個強(qiáng)大的開源Web功能測試工具系列,本系列4款:1.SeleniumCore:支持DHTML的測試案例(效果類似數(shù)據(jù)驅(qū)動測試),它是SeleniumIDESeleniumRC的引擎。2.SeleniumIDE:FireFoxSeleniumRC:SeleniumRemoteControl。后續(xù)的系列文章我會主要針對SeleniumRC展開介紹。SeleniumGrid:允許同時并行地、在不同的環(huán)境上運(yùn)行多個測試任務(wù),極大地加快Web應(yīng)用的功能測試。既然Selenium4款這么多,那到底如何選擇呢??我從"Selenium官網(wǎng)"Selenium SeleniumCore僅需要安否否是否支持是是是是是是否是需要否是否否將保存到磁是是否是僅僅僅這里沒有介這里沒有介紹SeleniumGrid,但介紹了另外一個SeleniumCoreHTA,SeleniumCoreHTA其實(shí)是SeleniumCore的額外模式,你只要SeleniumCore配置稍加修改,即為HTA模式,SeleniumCoreHTA可以在IE最高安全等級( 這意味著它僅能在IE下工作,由于限制較大,下面將排除對SeleniumCoreHTA的(1).SeleniumIDE僅可以在Firefox(2).SeleniumRemoteControlsafari等N(3).SeleniumCore支持的瀏覽器是最廣的,這點(diǎn)和它的實(shí)現(xiàn)有關(guān)。作為IDERC的引擎,SeleniumCore 這里只有SeleniumCore需要,這是出于同源策略的原因。這也是SeleniumCore一個很大的限制,試問,如果你要測試 上裝一個SeleniumCore,那是多搞笑的一件事。而SeleniumIDE和SeleniumCoreHTA不會被同源策略所限制,因?yàn)樗麄儗gSeleniumRC提供一個代碼服務(wù)器來保證SeleniumJS文件看似來自相同的遠(yuǎn) 這里不說了,都支持。SeleniumRC在“是”后面加*因?yàn)樗窃谧罱姹局С值?,Java:準(zhǔn)確的說是需要這項(xiàng)只有SeleniumRC需要,上面2中所說的“ 服務(wù)器”是一個Java程序, 只有SeleniumCore不能將任何寫到磁盤上(因?yàn)樗怯胘avascript寫的,它不允許向磁盤寫數(shù)據(jù)),其解決方案是當(dāng)然你可以將發(fā)送到另外一臺服務(wù)器保存。這也是SeleniumCore的一大限制。(1).SeleniumIDE僅支持Selenium(3).SeleniumCore也是僅支持Selenium 工具(如:FirefoxIDE,SeleniumCore等),不懂程序的測試人員它的缺點(diǎn)是:Selenese有一些嚴(yán)格的限制:它沒有條件(沒有"if"表達(dá)式),并且它 (1).SeleniumIDE支持并且只支持Firefox瀏覽器,支持的瀏覽器太少,而依附于Firefox也不便于日后開展自動化測試,但是,它的錄制快捷好用!并且有代碼轉(zhuǎn)換功能,可以把Selenium語言測試案例轉(zhuǎn)為C#,Java等語言的測試案例,我建議使用SeleniumIDE+FireBug進(jìn) 再調(diào)用SeleniumRC運(yùn) (2).SeleniumCore,它的優(yōu)點(diǎn)是編寫測試案例簡單,并且支持絕大多數(shù)的瀏覽器,但缺點(diǎn)也同樣明顯,SeleniumCore需要 安裝,Selenese語言也限制了復(fù)試工具不可能100%滿足你測試需求的,當(dāng)它不能滿足你測試需求時候,它必須有一(3).SeleniumRC是我推薦使用的工具,它支持很多瀏覽器,可以使用C#,Java SeleniumRC作為默認(rèn)的測試工具。Selenium2XPath在編寫Selenium案例時,少不免是要用到XPath的,現(xiàn)在外面關(guān)于XPath使用的參考資料很多,下面我直接轉(zhuǎn)一篇關(guān)于XPath使用的文檔。如果對XPath不熟悉請參考 搜索關(guān)于XPath的資料,因?yàn)橄旅娴膬?nèi)容已經(jīng)足夠你寫測試時使用,如果你已熟悉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中,路徑符合某個模式的所有節(jié)點(diǎn)出來。例如要選catalog的cd中所有price元素可以用:如果XPath的開頭是一個斜線(/)代表這是絕對路徑。如果開頭是兩個斜線(//)來。以下的語選出文件中所有叫做cd的元素(在樹中的任何層級都會被選來以下的語選出所有catalog的子元素中,包含有price作為子元素的元素以下的語選出有兩層父節(jié)點(diǎn),叫做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如果是需要經(jīng)過JavaScript的alert或 verify或assertSeleniumJohne----ee-JavaScripttrue值,超時則停 dJavaScript表達(dá)式賦值給變MrJohn$.{title}$.{firstname}-當(dāng)下次JavaScript彈出 框的時候,讓selenium選--AssertVerify,當(dāng)assertLocation,assertTitleassertLocation,assertTitleeneMyMyinputJohneJohnassertSelected,assertSelectedOptionsassertSelected,assertSelectedOptionsJohndd sltlYouarenowloggedtYouarenowloggedtassertTextPresent,etc.assertTextPresent,etc. tablecellcellAddresstableName.row.column,注意行列序號都是0開始deassertVisible,nonVisibleassertVisible,nonVisible隱藏一個元素可以用設(shè)置css的'visibility'屬性為'hidden',也可以 Editable,non-editableEditable,non-editablee-JavaScriptmessage的框alert時會產(chǎn)生與手動點(diǎn)擊'OK'按鈕一樣的效果。如果一個alert產(chǎn)生了,而你卻沒有去檢查它,seleniumaction中-注意:Selenium不支持JavaScript在 時調(diào)JavaScriptmessage的框和alert情況一樣 默認(rèn)情況下,Seleniumconfirm()返回true, 框 檢查JavaScript是否有產(chǎn)生帶指定message的 你檢查的prompt的順序 --個actionDelegatetoStore,storeValuestoreTextVariableVariableSubstitution變量,$.{title}Fullnameis:javascriptjavascript.{'with'Selenium4SeleniumIDE前前 ,SeleniumIDE是Firefox的一個插件,是可以進(jìn)換,所以SeleniumIDE+Firebug會成為你日后寫測試案例的兩大助手(IE用SeleniumCore+IEDevelperToolBar)Selenium::1.SeleniumIDE,F(xiàn)irebug2.Selenium 框上圖標(biāo)明了一些SeleniumIDE的主要功能。其中,由Command,Target,Value組成的表格就是 都是由一條一條的Action(行為)組成,而每個Action又由(Command,Target,Value)三者組成。Command就是上文《API參考手冊》提到的內(nèi)容,Target指的是Web中的某個對象,比如:文字,輸入框等等,如果選取對象呢?呵呵,這里就用到了XPath,不熟悉可以參考《XPath的使用》,而Value就是這個對象的值。當(dāng)彈出上面的IDE窗口后,我們就可以開始Selenium的 紅色的圓點(diǎn),當(dāng)它下按時(如上圖)就表示IDE正在進(jìn)行 制的時候,直接操作Firefox瀏覽器窗口就可以了,IDE會自動記錄你的操作的,下面 (4).進(jìn)入搜索結(jié)果頁面后,右鍵單擊第一條記錄(即:hyddd博客園),在右鍵彈出菜單中,單擊“VerifyTestPersenthyddd-博客園”。(5).單擊第一條記錄(即:進(jìn)入hyddd-博客園(6).Firefox彈出一個新TabOKSeleniumIDE錄制的結(jié)果吧上圖中,中間的表格就是錄制的結(jié)果,你可以按“運(yùn)行”重新回放看看,值得注意的是,在運(yùn)行時,F(xiàn)irefox可能會認(rèn)為中最后一個操作(6)為非Firefox,具置是: bar->Tools->options->content->Blockpop-upWindow,你可以把鉤去掉或者在Exceptions里面添加相應(yīng)的 恩,到此為止 在運(yùn)行后,你會發(fā)現(xiàn)IDE表格的顏色發(fā)生了變化,運(yùn)行前,表格為白色,-博客園”判斷結(jié)果為false,這種情況案例還是會繼續(xù)執(zhí)行下去,判斷 SeleniumIDE本文開始時提到了,SeleniumIDE還有一個重要的功能就是把 SeleniumIDE可以把HTML的 轉(zhuǎn)為C#,JAVA等等其他語言的 們?nèi)蘸髮慡eleniumRC的測試案例提供了極大的方便。Selenium5SeleniumRC《Selenium,SeleniumRC如:C#,PythonPython1000SeleniumRC:SeleniumRC上一篇《SeleniumIDESeleniumIDE可以把錄制的轉(zhuǎn)為其他語言的,所以我繼續(xù)用上一篇的為例子,下面是把語言轉(zhuǎn)換為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加入項(xiàng)目: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運(yùn)試案(1).運(yùn)試案例(2).PassErrorMeesage(注意:和Firefox一樣,IE下也有彈出網(wǎng)頁功能,修改設(shè)置方法:Bar->Tools->PopupBlocker->TurnoffPopupBlocker,或PopupBlockerSettingsSelenium6--SeleniumRC工作原前一篇已經(jīng)比較詳細(xì)講述了如何使用前一篇已經(jīng)比較詳細(xì)講述了如何使用SeleniumRC進(jìn)行WebSeleniumRC是什么?一.SeleniumRCSeleniumRC(1).SeleniumSeleniumServer負(fù)責(zé)控制瀏覽器行為,總的來說,SeleniumServer主要包括3 ,SeleniumCore。其中SeleniumCore是被SeleniumServer嵌入到瀏覽器頁面中的。其實(shí)SeleniumCore就是一堆JS函數(shù)的集合,就是通過這些JS函數(shù),我們才可以實(shí)現(xiàn)用程序?qū)g覽器進(jìn)行操作。寫測試案例時用來控制SeleniumServer Lib的接口向SeleniumServer發(fā)送Http請求,要求和SeleniumServer建立連接。為什么要通過發(fā)送Http請求控制SeleniumServer以看出,SeleniumServer是一個獨(dú)立的中間服務(wù)器(確切地說是服務(wù)器),它可以架設(shè)在其他機(jī)器上!所以測試案例通過發(fā)送HTTP請求去控制SeleniumServer(2).SeleniumServer的Launcher啟動瀏覽器,把SeleniumCore加載入瀏覽器 設(shè)置為SeleniumServer的Http Lib的接口向SeleniumServer發(fā)送HttpSeleniumServer對請求進(jìn)行解析,然后通過 發(fā)送JS命令通(5).瀏覽器收到新的頁面請求信息(因?yàn)樵?4)中,SeleniumCore的操作可能的頁面請求),于是發(fā)送Http請求,請求新的Web頁面。由于SeleniumServer在啟動瀏覽器時做了手腳,所以SeleniumServer新(6).SeleniumServer接收到瀏覽器的發(fā)送的Http請求后,自己重組Http取對應(yīng)的Web(7).SeleniumServer的把接收的Web為什么SeleniumRC中的SeleniumServer下一篇繼續(xù)介紹Selenium7--SeleniumRC工作原繼續(xù)前一篇的問題,為什繼續(xù)前一篇的問題,為什么SeleniumRC中的SeleniumServer需要以這種代理服務(wù)器的形式存在?其實(shí),這和瀏覽器的“同源策略”(TheSameOrigin 同源策略,它是由假設(shè)現(xiàn)在沒有同源策略,會發(fā)生什么事情呢?大家知道,JavaScript可以做很多東 /修改網(wǎng)頁中某個值。恩,你現(xiàn)在打開了瀏覽器,在一個tab窗口中打 ,在另外一個tab窗口中打開了一個 的專門修改銀行信息的JavaScript,當(dāng)你 時,你的銀行頁面就會被這個JavaScript并且執(zhí)行它比如說,瀏覽器的兩個tab頁中分別打開了ht /index.html和 /index.html,其中,JavaScript1和JavaScript3是屬 ,而JavaScript2是屬于谷歌的 ,當(dāng)瀏覽器的tab1要運(yùn)行一個 、協(xié)議、端口相同。所以,tab1只能執(zhí)行JavaScript1和 ,而JavaScript2不能執(zhí)行,從而防止其他網(wǎng)頁對本網(wǎng)頁的 二.SeleniumServer為什么以這 上面說了同源策略,那同源策略的SeleniumServer有什么關(guān)系呢??呵呵,上一篇,SeleniumCore是一堆JS函數(shù)的集合,它是我們操作瀏覽器的基礎(chǔ)。當(dāng)因?yàn)镾eleniumCore的JS的“源”是localhost,所以瀏覽器會SeleniumCore的JS在測試頁面上執(zhí)行,這就是為什么在本系列第一篇中說,如果只使用SeleniumCore進(jìn)試,需要把SeleniumCore安裝到服務(wù)器上。為了解決上面這個問題,SeleniumRC中的SeleniumServer就以 SeleniumServer 的形式存在,通過修改WebSite的源信息,從而達(dá)瀏覽器的目的,就這樣,SeleniumRC就輕松繞過了同源策略。在上圖中,瀏覽器會認(rèn)為WebSite和SeleniumCore來自同一個“源”---- Selenium8玩轉(zhuǎn)Selenium本篇主要是想更進(jìn)一步介紹本篇主要是想更進(jìn)一步介紹SeleniumServerSeleniumServer的交互模式在《第一個SeleniumRC測試案例》中,我們以命令“java-jarselenium-server.jar”啟動了SeleniumServer,其實(shí)在啟動SeleniumServer時,我們還可以加上各種參數(shù)(具體的參數(shù)請參考《SeleniumRC服務(wù)器命令行參數(shù)列表》),而開啟SeleniumServer交互模式 令為“java-jarselenium-server.jar- ctive”。交互模式,是SeleniumServer提供的一種快速的測試方法,你可以對SeleniumServer輸入命令從而直接啟動測試。.comSeleniumServer啟動瀏覽器,以及創(chuàng)建Session(1).--->Requesting看過《深入了解SeleniumRC工作原理(1)》的應(yīng)該了解:我們所編寫的測試案例,其實(shí)是通過發(fā)送Http請求實(shí)現(xiàn)對SeleniumServer的控制,而測試案例所發(fā)送的請求就正是:--->Requesting,回車!看,SeleniumServer又為此產(chǎn)生了一個Session了!呵呵(2).這里,SeleniumServer為上面的請求隨機(jī)生成了一個SessionID:SeleniumServer,所以這里和上圖的SessionID不同,并且下文會繼續(xù)使用SessionID:9505f5f8c52041c28f4cdc1f8e59f769)。(3).如果一切正常,SeleniumServer最后會出現(xiàn)GetResultOk的字樣,并出現(xiàn) 噢,瀏覽器成 (1).在SeleniumServermand&1=Target&2=Value&SessionID=…SeleniumIDE的案例語句很像。"*iexplore","*iexplore",ISeleniumselenium=(2).在輸入命令后,SeleniumServer會發(fā)條Http請求給自己,請求的URL格式 ,我們完全可以用瀏覽器發(fā)送請求控制SeleniumServer 試(3).另外,sessionId是很重要的一個參數(shù),當(dāng)一個SeleniumServer同時運(yùn)行多個測試案例時,SeleniumServer就是通過sessionId判斷到底該操作哪個瀏覽器窗口。而在下面的C#代碼中:ISeleniumselenium=newDefaultSelenium("",4444,"*iexplore","htt selenium就相當(dāng)于上文中的sessionId(4).在SeleniumServer啟動一個Session“源”(原因見《深入了解SeleniumRC工作原理(2)》),在上面的代碼中httSeleniumSeleniumServer提示說;如果測試案例是運(yùn)行在*iehta或者*chrome上,或者改變SeleniumServer的運(yùn)行模式為 injectionmode即可避免問題出現(xiàn)。恩,在這里,我不得不承認(rèn)之前在《深入了解SeleniumRC工作原理(1)》中,為其實(shí),SeleniumServer2就可能會出現(xiàn)各種問題,故此SeleniumServer我們在啟動Session時,定義了源為中,我們打開的卻是(1).HeightenedPrivileges現(xiàn)在SeleniumServer啟動的默認(rèn)模式為:HeightenedPrivilegesBrowsers。如 Injection模式,可以加參數(shù)“- 《深入了解SeleniumRC工作原理(1)》中介紹SeleniumRC與Testcase關(guān)系, Injection的工作模式,因?yàn)槲覀€人認(rèn)為 Injection模式作介紹。在這里我補(bǔ)充說明一下,為什么HeightenedPrivilegesBrowsers模式不能避免上面的問題。先看看SeleniumServer在HeightenedPrivilegesBrowsers模式下的工作流程圖: Injection模式不一樣,在HeightenedPrivilegesBrowsers模式下,Browser對Web的請求沒有經(jīng)過Http ,所以返回的Web頁面就有可能和SeleniumCore不同源了(一般的情況下,Open都應(yīng)該只獲取“源”下的某個子頁面,用Open獲取其他“源”的頁面在測試中應(yīng)該是極少數(shù)的,因?yàn)樵谶@種情況下,我們還應(yīng)該再new一個新的ISeleniumselenium進(jìn)行處理,雖然用Open獲取其他“源”的頁 Inj
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 長春大學(xué)旅游學(xué)院《學(xué)科教學(xué)設(shè)計(jì)與案例分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 民辦四川天一學(xué)院《卓越教師綜合訓(xùn)練》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東女子學(xué)院《果蔬加工工藝學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 蘭州理工大學(xué)《模擬電子技術(shù)仿真設(shè)計(jì)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣西自然資源職業(yè)技術(shù)學(xué)院《中國區(qū)域經(jīng)濟(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 吉首大學(xué)張家界學(xué)院《水文學(xué)與水資源》2023-2024學(xué)年第一學(xué)期期末試卷
- 溫州肯恩大學(xué)《工程倫理與藝術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 河北農(nóng)業(yè)大學(xué)現(xiàn)代科技學(xué)院《精神病學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 武漢電力職業(yè)技術(shù)學(xué)院《熱學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西財(cái)貿(mào)職業(yè)技術(shù)學(xué)院《EDA設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 中國生殖支原體感染診療專家共識(2024年版)解讀課件
- 人教版小學(xué)三年級下期數(shù)學(xué)單元、期中和期末檢測試題
- 森林經(jīng)理學(xué) 課程設(shè)計(jì)
- 工會驛站驗(yàn)收
- “雙減”政策(2023年陜西中考語文試卷非連續(xù)性文本閱讀題及答案)
- 【全友家居企業(yè)績效考核問題及其建議(論文8500字)】
- 職業(yè)技術(shù)學(xué)?!对朴?jì)算運(yùn)維與開發(fā)(初級)》課程標(biāo)準(zhǔn)
- 幼兒園大班數(shù)學(xué)練習(xí)題直接打印
- 100以內(nèi)整十?dāng)?shù)加減法100道口算題(19套)
- SAP-TM運(yùn)輸管理模塊操作手冊(S4系統(tǒng))
- 【醫(yī)療管理案例】:以??苹母锎龠M(jìn)醫(yī)院戰(zhàn)略發(fā)展-中南大學(xué)湘雅醫(yī)院學(xué)科建設(shè)實(shí)踐案例
評論
0/150
提交評論