(Selenium IDE/Core/Core HTA/RC)javascript
Selenium html腳本,又稱爲Selenese,結構清晰簡單:html
是一個HTML Table:java
Test02 | ||
open | http://www.google.com/ | |
type | q | ddddddd |
clickAndWait | btnG | |
assertText | sd | Web |
HTML Table 由三列構成:程序員
First Column: Selenium command,命令或斷言。web
Second Column: Target of command,命令或斷言的目標(target)。這裏能夠用多種受支持的組件定位符中的一種來指定目標。一般使用的是組件的 ID 或名稱,但 XPath 和 DOM 定位符也是受支持的;shell
Third Column: Optional parameter,用於爲命令或斷言指定參數的值。例如,當使用 type 命令時,這一列可能就是一個文本域所指望的值。瀏覽器
在selenium core的發佈包裏,也有此reference,下文中即將提到。服務器
對於自動化測試來講,任何錄製/回放工具獲得的腳本,都是要進行修改的,這樣可以增長腳本的健壯性。將腳本存爲html文件。最終的腳本也要至少回放一遍經過才能算完成,在Selenium IDE中,點播放按鈕觀看放映。session
Selenium Core位於:app
http://selenium-core.openqa.org/
它是一個zip包,須要應用服務器的支持,此處對於應用服務器的部署等省略,將zip包放入待測試的Web程序下,啓動應用服務器,打開 URL:http://localhost:8080/selenium/ ,進入 「Selenium TestSuite」。TestSuite用於將具備相似功能的一些測試用例編成一組,以便它們按順序運行。TestSuite和Test Cases同樣,都是用簡單的 HTML 表編寫的。Selenium 執行的缺省TestSuite的名稱是 TestSuite.html,位於tests文件夾下。
以上是一個官方版TestSuite的摘錄,參照例子,組織本身的Test Cases,寫成TestSuite,放入tests文件夾,即可在瀏覽器中執行(適用於各類瀏覽器),例 如:http://localhost:8080/selenium/core/TestRunner.html?test=../tests /myTestSuite.html
值得注意的是:Selenium Core的tests裏包含了不少Selenium Command的例子,值得好好研習。
Core HTA 也在Selenium發佈包內,僅適用於IE瀏覽器,不須要遠程安裝,也不須要Java支持。在命令行裏執行命令便可:
C:\selenium\core>TestRunner.hta "test=..%2Ftests%2FTestSuite.html&auto=true&close=true&resultsUrl=results.html&save=true"
根據實際狀況修改幾個參數,即可執行本身的TestSuite了。
下載Selenium RC 包:
http://selenium-rc.openqa.org/
是一個Zip包,裏面提供了支持各類語言的驅動。核心的是 selenium-server.jar 這個jar包,在下文介紹交互模式(Interactive Mode)時用到的就是它。
本指南將會告訴你如何從命令行啓動Selenium server,如何在交互式模式下使用Server。這裏假設你已經熟悉在命令行執行程序。最後,咱們將說明如何寫簡單的test來實現咱們已在交互式模式下實現的功能。
Selenium Server 是用Java語言編寫的,須要在JRE 1.5.0或者更高的版本下運行。也許你已經安裝JRE,在命令行中執行:
java -version
你能夠看到以下的關於你安裝的java的版本信息:
相反,若是你看到的是錯誤信息,你須要安裝JRE,或者是將它填加到你的PATH環境變量中去。
同時你須要確保你的安裝的瀏覽器也支持這些,例如:
Windows
若是你用的是Windows XP 或者是Windows2003,你可使用IE 瀏覽器,或者安裝Mozilla Firefox 或者Opera瀏覽器。
若是你是用的是Windows2000,若是想使用IE瀏覽器,你就須要安裝reg.exe, 可是若是使用Firefox不須要。咱們建議(但不是必須)將你的瀏覽器執行路徑加到你的PATH環境變量中(若是你不知道如何將你的瀏覽器安裝目錄加到 PATH中,那麼你就必須將你的瀏覽器安裝到標準路徑下:Firefox的標準路徑:"c:\Program Files\Mozilla Firefox\firefox.exe";IE瀏覽器的標準路徑:"c:\Program Files\Internet Explorer\iexplore.exe")
Unix/Linux
在這個指南中,要求安裝Firefox,而且將它的路徑加到你的PATH環境變量中。注意,在Unix/Linux中咱們激活"firefox- bin" 目錄,從而確保在這個路徑下執行;同時不要忘記將Firefox libraries 加到你的 LD_LIBRARY_PATH中。若是須要,咱們能夠經過shell腳本激活firefox(例如:"firefox" or "run-mozilla.sh")那樣的話知道你關閉這個服務器的時候才能夠結束Firefox瀏覽器。
Mac OS X
對於 Mac OS X,只要在你的/Applications目錄下,安裝Firefox.app就夠了。注意:爲了精確控制你的瀏覽器,咱們須要激活 Applications/Firefox.app/Contents/MacOS 目錄下的Firefox內嵌的執行程序(firefox-bin);若是你的瀏覽器的安裝位置不在那,你須要將你當前的內嵌位置加到你的PATH路徑下, 做爲你的DYLD_LIBRARY_PATH環境變量。
Selenium服務器的「交互模式」是一種不須要任何代碼的原型測試,所以有必要對初學者介紹Selenium Remote Control。在交互模式下,你能夠在Selenium 服務器窗口中輸入一行行的命令,在工做窗口的某個位置中馬上會執行你命令的結果。一般你能夠選用你喜歡的語言編寫你的測試代碼,整個過程都是徹底自動化 的。
確保Java安裝正常,經過命令行的方式用以下的命令來啓動你的Selenium Server:
java -jar selenium-server.jar -interactive
這個命令將啓動Selenium服務器,並容許你在命令窗口輸入命令。在一些登陸信息後邊,你應該看到以下的信息:
Entering interactive mode... type Selenium commands here (e.g: cmd=open&1=http://www.yahoo.com)
讓咱們開始學習Selenium 服務器,第一個命令是打開瀏覽器,在Windows操做系統下,在命令窗口下試試輸入下面的命令:
cmd=getNewBrowserSession&1=*iexplore&2=http://www.google.com
若是你想使用FireFox瀏覽器,你能夠試以下的命令:
cmd=getNewBrowserSession&1=*firefox&2=http://www.google.com
這句話的意思是:執行getNewBrowserSession命令,選擇一個瀏覽器(*iexplore for Internet Explorer, *firefox for Firefox, or *opera for Opera)打開www.google.com網站。在窗口中輸入這條命令,會自動的將HTTP網頁的請求發送給Selenium服務器,你能夠看到關於 你的請求的以下描述:
--->Requesting http://localhost:4444/selenium-server/driver?cmd=getNewBrowserSession&1=*firefox&2=http://www.google.com
若是一切正常,你將會發如今你選擇的瀏覽器中打開了一個新的窗口,回到Selenium服務器窗口中,你會發現以下的信息:
Got result: OK,260113 on session 260113
(若是沒有以上信息,請參考故障指南)
消息的第一部分「Got result: OK」表示你的請求成功,第二部分,是Session 的ID,每次執行"getNewBrowserSession" 命令時,Session的ID都是不一樣的。
這是IE相應的快照:
![]() |
讓咱們試一下更多的命令:咱們將打開Google的網站,在命令窗口中輸入下面的命令,而且將ID換成你運行"getNewBrowserSession"時得到的ID。
cmd=open&1=http://www.google.com/webhp&sessionId=260113
當執行完這個命令後,在你的瀏覽器窗口的下方將會打開google.com頁面。(The /webhp 確保咱們在www.google.com網站;不然,咱們須要經過某個國家的Google服務器間接的訪問Google, 例如., www.google.fr.)
如今Google已經被打開了,咱們能夠試着在Search Box中輸入一些字段,在Selenium 服務器窗口命令中輸入:
cmd=type&1=q&2=hello world&sessionId=260113
一樣,不要忘記將你的Session ID換成你得到的ID,若是一切按計劃執行,你將會在google的search對話框中看到「hello world」,如今讓咱們開始查詢:
cmd=click&1=btnG&sessionId=260113
如今在瀏覽器中你能夠看到查詢的結果,你能夠經過許多Selenium命令在瀏覽器中自動執行手工任務,對於一些特殊的命令,你能夠在 Openqa的網站上查詢Selenium Core部分,或者查看咱們客戶端驅動的相關資料(Java, .NET, Perl, PHP, Python or Ruby).
接下來咱們想作的事情多是在頁面上讀出一些咱們想要的信息, 例如,讓咱們在當前頁面上找到一些HTML的標題,以下:
cmd=getTitle&sessionId=260113
瀏覽器將會返回咱們載入的HTML頁面的標題:
Got result: OK,hello world - Google Search on session 260113
如今這些交互模式已經夠了;讓咱們開始寫一些代碼!可是在咱們開始前,讓咱們關掉咱們啓動的瀏覽器。輸入以下的命令:
cmd=testComplete&sessionId=260113
輸入這些命令後,你的瀏覽器窗口將會自動關閉,想要關掉Selenium服務器,輸入「quit」或者只要按下「Ctrl+C」。
當你執行你的測試的時候,你也許會注意到你的瀏覽器種的URL是:
http://www.google.com/selenium-server/RemoteRunner.html?sessionId=260113
這個不是一個普通的URL,由於在www.google.com上並無這個URL,若是你手工在你的瀏覽器中輸入地址,將會出現404錯誤頁面,怎麼回事那?
JavaSript自動測試的時候,Selenium服務器參與解決了一個難題,你本身寫的JavaScript腳本不會在Google.com上 執行,這是因爲Same Origin Policy,同源策略使得JavaScript腳本容許只能閱讀/修改來自相同源頭的HTML。
這給Selenium自動測試帶來了很大問題,若是你寫了一個設置測試google.com的.js代碼,同源策略拒絕你的.js文件在 google.com上運行;相反,你應該在google.com上安裝那個.js文件來使它運行,咱們沒有權利這樣作,即便有,這樣作也會引發爭議。
Selenium Server便應運而生,在你用"getNewBrowserSession"自動開啓的瀏覽器中,.Selenium Server如同是客戶端配置的代理(client-configured proxy)。尤爲,他將你的瀏覽器配置成和瀏覽器相關的使用Selenium Server代理。
代理一般會捕捉你在HTML頁面上的行爲,若是頁面沒有找到,將會報告該頁不存在。可是Selenium Server是個很不一樣的代理,當瀏覽器經過包含"/selenium-server/"的代理在URL中請求某個頁面時,Selenium Server不會單純的在遠程服務器上取回該頁,而是自動的返回它本身的頁面。在某種意義上,這使得瀏覽器認爲遠程服務器上包含這個頁面,這樣咱們就能夠 在google.com上注入任意的JavaScript代碼而不用以任何方式修改google.com。
以上介紹了一點原理和基本的使用方法。很顯然,打開一個cmd窗口,一行一行的輸入命令,是使人崩潰的事情,而且命令行看起來很不可愛。Selenimu RC的魅力就在於,能夠經過程序來實現這樣的測試:來看一個Java的例子:
SetUp( )函數,就是交互模式中的
cmd=getNewBrowserSession&1=*firefox&2=http://www.google.com
命令。
testGoogle( ) 函數,更不須要程序員親自動手編寫,Firefox 的 Selenium IDE 插件,能夠自動將Selenium html腳本,轉換成各類語言(Options->Format)。
![]() |
就是這麼簡單,規劃測試用例,錄test cases,修修改改,貼到代碼裏面,還須要程序員作什麼呢?
Source URL: http://www.blogjava.net/becky/archive/2009/02/09/183471.html