webdriver實質要點:一套基於REST(json格式)的webdriver wire 協議完整規範,規範抽象出如何實現瀏覽器的各項操做(打開關閉、元素定位操做、插件安裝、文件下載上傳等)
web
webdriver具體實現:不一樣平臺不一樣的瀏覽器分別就 1. 中所說的webdriver wire協議規範,以瀏覽器原生組件的形式,實現對webdriver接口調用到瀏覽器原生本地調用的轉化,達到直接利用瀏覽器原生支持接口來操做瀏覽器的目的。eg:firefox的webdriver.xpi,IE的IEDriver.dll等json
webdriver角色形象:如同一個代理服務器(接受客服端的請求,轉換爲REST(json格式),由瀏覽器發送到web服務器,接受web服務器響應,轉換爲REST(json格式),再由瀏覽器展現結果)瀏覽器
webdriver實例化過程要點:服務器
基於具體的瀏覽器實例化webdriver,以webdriver.firefox()爲例:包括檢查初始化webdriver的具體組件實現如瀏覽器組件webdriver.xpi、初始化firefox profile(默認配置)、remote webdriver的初始化、啓動firefox實例、分配獨立sessionid、創建httpconnect鏈接服務等session
每次經過webdriver啓動firefox都創建一個獨立的sessionid,支持多線程並行處理等多線程
類HttpCommandExecutor具體實現有一個簡單字符串形式的操做命令到REST形式httprequest轉換
spa
webdriver應用要點:主要是webelement的定位、操做,page object模式算是最佳實踐
firefox