前一篇已經比較詳細講述了如何使用Selenium RC進行Web測試,但到底Selenium RC是什麼?或者它由哪幾部分組成呢??
關於這個問題,我拿了官網上的一幅圖來說明這個問題。
Selenium RC主要由兩部分組成:
(1).Selenium Server:
Selenium Server負責控制瀏覽器行為,總的來說,Selenium Server主要包括3個部分:Launcher,Http Proxy,Selenium Core。其中Selenium Core是被Selenium Server嵌入到瀏覽器頁面中的。其實Selenium Core就是一堆JS函數的集合,就是通過這些JS函數,我們才可以實現用程序對瀏覽器進行操作。
(2).Client Libraries:
寫測試案例時用來控制Selenium Server的庫。
先看下圖:
(1).測試案例(Testcase)通過Client Lib的接口向Selenium Server發送Http請求,要求和Selenium Server建立連接。
為什麼要通過發送Http請求控制Selenium Server而不採用其他方式呢?從上文可以看出,Selenium Server是一個獨立的中間服務器(確切地說是代理服務器),它可以架設在其他機器上!所以測試案例通過發送HTTP請求去控制Selenium Server是很正常的。
(2).Selenium Server的Launcher啟動瀏覽器,把Selenium Core加載入瀏覽器頁面當中,並把瀏覽器的代理設置為Selenium Server的Http Proxy。
(3).測試案例通過Client Lib的接口向Selenium Server發送Http請求,Selenium Server對請求進行解析,然後通過Http Proxy發送JS命令通知Selenium Core執行操作瀏覽器的動作。
(4).Selenium Core接收到指令後,執行操作。
(5).瀏覽器收到新的頁面請求信息(因為在(4)中,Selenium Core的操作可能引發新的頁面請求),於是發送Http請求,請求新的Web頁面。
由於Selenium Server在啟動瀏覽器時做了手腳,所以Selenium Server會接收到所有由它啟動的瀏覽器發送的請求。
(6).Selenium Server接收到瀏覽器的發送的Http請求後,自己重組Http請求,獲取對應的Web頁面。
(7).Selenium Server的Http Proxy把接收的Web頁面返回給瀏覽器。
為什麼Selenium RC中的Selenium Server需要以這種代理服務器的形式存在呢?下一篇繼續介紹:>