Selenium原理介绍
Selenium 經歷了兩個版本,Selenium 1.0 和 Selenium 2.0,本文僅介紹Selenium2的原理,在Selenium 2.0 主推的是WebDriver,Selenium2又名Selenium Webdriver。
Selenium2簡介
Selenium是一個用于Web應用程序測試的工具,支持多平臺、多瀏覽器、多語言去實現自動化測試,Selenium2將瀏覽器原生的API封裝成WebDriver API,可以直接操作瀏覽器頁面里的元素,甚至操作瀏覽器本身(截屏,窗口大小,啟動,關閉,安裝插件,配置證書之類的),所以就像真正的用戶在操作一樣。
Webdriver的一個簡單的架構圖,如下圖所示:
Selenium2原理
webdriver是按照server–client的經典設計模式設計的:
server端就是remote server,可以是任意的瀏覽器:我們的腳本啟動瀏覽器后,該瀏覽器就是remote server,它的職責就是等待client發送請求并做出相應;
client端簡單說來就是我們的測試代碼:們測試代碼中的一些行為,比如打開瀏覽器,轉跳到特定的url等操作是以http請求的方式發送給被server端(也就是被測瀏覽器)server接受請求,并執行相應操作,并在response中返回執行狀態、返回值等信息;
簡單介紹一下webdriver的工作原理:
啟動瀏覽器后,selenium-webdriver會將目標瀏覽器綁定到特定的端口,啟動后的瀏覽器則作為webdriver的remote server。
客戶端(也就是測試腳本),借助ComandExecutor發送HTTP請求給sever端(通信協議:The WebDriver Wire Protocol,在HTTP request的body中,會以WebDriver Wire協議規定的JSON格式的字符串來告訴Selenium我們希望瀏覽器接下來做什么事情)。
Sever端需要依賴原生的瀏覽器組件,轉化Web Service的命令為瀏覽器native的調用來完成操作。
注:
the WebDriver Wire Protocol是Selenium自己設計定義的協議,這套協議非常之強大,幾乎可以操作瀏覽器做任何事情,包括打開、關閉、最大化、最小化、元素定位、元素點擊、上傳文件等。
WebDriver Wire協議是通用的,也就是說不管FirefoxDriver還是ChromeDriver,啟動之后都會在某一個端口啟動基于這套協議的Web Service。
例如FirefoxDriver初始化成功,默認從http://localhost:7055開始IE則是http://localhost:52432,如下圖截圖:
參考資料
[1] selenium webdriver的原理,
http://www.51testing.com/html/95/477695-846433.html
[2]Selenium源碼分析之WebDriver ,
http://blog.csdn.net/ant_ren/article/details/7970793.html
[3]selenium及webdriver的原理
http://www.cnblogs.com/sunada2005/archive/2013/12/22/3486314.html
http://blog.csdn.net/ant_ren/article/details/7968582
http://blog.csdn.net/ant_ren/article/details/7970793
這里作者初步畫了一個圖來表示各種WebDriver的工作原理:
從上圖中我們可以看出,不同瀏覽器的WebDriver子類,都需要依賴特定的瀏覽器原生組件,例如Firefox就 需要一個add-on名字叫webdriver.xpi。而IE的話就需要用到一個dll文件來轉化Web Service的命令為瀏覽器native的調用。另外,圖中還標明了WebDriver Wire協議是一套基于RESTful的web service。如果不明白什么是RESTful的,可以參見作者之前另外一篇介紹REST的blog(http://blog.csdn.net/ant_yan/article/details/7963517)
關于WebDriver Wire協議的細節,比如希望了解這套Web Service能夠做哪些事情,可以閱讀Selenium官方的協議文檔
總結
以上是生活随笔為你收集整理的Selenium原理介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: requests库将cookieJar对
- 下一篇: html全屏背景视频特效,HTML –