資源推薦:
社群資源: 自動化測試交流群
selenium1(selenium rc)
selenium server, 負責啟動和關閉浏覽器,以及解釋和運作從測試程式傳送過來的selenese指令,并充當http proxy角色。
client開發庫,開發庫提供了編寫測試腳本的api,用于與selenium server進行指令互動。
為了能更好的了解selenium rc server是如何工作以及為什麼要使用代理注入的方式完成測試指令執行,首先必須要了解的是“同源政策”(the same origin policy)。
the same origin policy, 市場上所有浏覽器之是以會應用這個政策,其目的是為了阻止來自其他站點的javascript通路本站的web 資訊,“同源政策”意思是浏覽器僅執行目前通路的域(domain)下的代碼,而不會執行來自其他站點的代碼,如果這種方式行的通的話,我們很多資訊就很容易被跨站方式竊取,也就是常說的xss(cross-site scripting).
是以selenium core(javascript庫)想正确的在目标站點中執行selenese指令,就必須将其與被測web應用放置在同源位置。
由于selenium core由javascript實作,是以它無法避免同源政策的限制,但是selenium rc不受此限制,将selenium rc作為一個代理來避免同源問題。
關于同源政策及xss的詳細資訊,可以參考如下文章:same origin policy , xss
selenium1架構如下圖所示:
當我們執行一個測試的時候,會按如下步驟依次執行:
1. 用戶端(測試腳本)與selenium-rc建立一個連接配接。
2. selenium-rc啟動浏覽器,并加載一個被注入了selenium-core的javascript的頁面,此時浏覽器會加載一個預設的使用者配置,将浏覽器代理設定為localhost:4444,其目的就是讓浏覽器所有請求及伺服器所有響應都通過這個代理服務進行轉發。
3. 用戶端開始發送指令到selenium-rc server
4. selenium-rc server收到指令後進行解釋并觸發已注入的javascript執行指令。
5. 浏覽器收到javascript指令後,相當于真實使用者與ui互動,并向http proxy發送http請求。
6. selenium-rc server與web server互動,擷取到web server響應後,将其僞裝成與第二步加載的頁面看起來是來自同一個伺服器,依次規避浏覽器同源政策。
7. 浏覽器收到響應内容後,進行渲染等操作。
點選連結加入群【悅分享測試聯盟】:https://jq.qq.com/?_wv=1027&k=5diepik