WebDriver 原理

注:學會根據執行順序看底層代碼web

 《如下內容摘自大師兄博客》chrome

WebDriver設計模式

webdriver是按照server – client的經典設計模式設計的。api

webdriver的做用就是建立一個新的瀏覽器實例,也就是啓動一個Server端。瀏覽器

(Starts the service and then creates new instance of chrome driver)restful

server端就是咱們的Remote server,也就是咱們經過各個不一樣瀏覽器所啓動的瀏覽器實例,在咱們腳本啓動瀏覽器後,這個瀏覽器就能夠稱之爲咱們的Remote server,它的職責就是等待client發送請求並作出相應處理。session

client 就是咱們的測試代碼,咱們測試代碼中的全部操做,好比打開瀏覽器,尋找元素,點擊都是以http請求的方式發送給被測試瀏覽器,也就是咱們的Remote server,remote server接受請求,並執行相應操做,並在response中返回執行狀態、返回值等信息(這裏調用的接口是瀏覽器的源生API,而每個瀏覽器都有本身的一套接口信息,這也就是爲何咱們要安裝不一樣的驅動的緣由)工具

WebDriver工做流程測試

一、經過WebDriver建立一個瀏覽器服務,啓動的瀏覽器實例將做爲WebDriver 的 remote server。優化

二、腳本啓動時會在新的線程中啓動一個瀏覽器,並綁定特定的端口,每一個瀏覽器有不一樣的端口段。

三、client 建立1個session,在該session中經過http請求向remote server發送restful(HTTPRequest)的請求,remote server解析請求,完成相應操做並返回response。

四、分析response,繼續執行腳本仍是結束執行

command.py

Command類中定義了WebDriver的一些經常使用的常量。

remote\webdrvier.py

全部瀏覽器webdrvier的基類,其中包含了全部webdriver的api接口

remote\remote_connection.py

包含啓動Remote WebDrvier server,執行client請求,self._commands是selenium的核心請求參數,根據對應的Command常量,發送不一樣的http請求。

Page Object Model(POM)的優點
1.    POM提供了一種在UI層操做、業務流程與驗證分離的模式,這使得測試代碼變得更加清晰和高可讀性
2.    對象庫與用例分離,使得咱們更好的複用對象,甚至能與不一樣的工具進行深度結合應用
3.    可複用的頁面方法代碼會變得更加優化
4.    更加有效的命名方式使得咱們更加清晰的知道方法所操做的UI元素。例如咱們要回到首頁,方法名命名爲: gotoHomePage(),經過方法名便可清晰的知道具體的功能實現。

相關文章
相關標籤/搜索