selenium WebDriver的實現原理

感受這篇博客寫的很詳細:java

獻上地址:https://blog.csdn.net/yoyocat915/article/details/80246744python

在WebDriver中也有相似的三個角色:chrome

  • 工程師寫的自動化測試代碼:自動化測試代碼發送請求給瀏覽器的驅動(好比火狐驅動、谷歌驅動)
  • 瀏覽器的驅動:它來解析這些自動化測試的代碼,解析後把它們發送給瀏覽器
  • 瀏覽器:執行瀏覽器驅動發來的指令,並最終完成工程師想要的操做。

下面再從技術上解釋下WebDriver的工做原理:後端

從技術上講,也一樣是上面的三個角色:瀏覽器

1. WebDriver API(基於Java、Python、C#等語言)服務器

對於java語言來講,就是下載下來的selenium的Jar包,好比selenium-java-3.8.1.zip包,表明Selenium3.8.1的版本測試

2. 瀏覽器的驅動(browser driver)spa

每一個瀏覽器都有本身的驅動,均以exe文件形式存在.net

好比谷歌的chromedriver.exe、火狐的geckodriver.exe、IE的IEDriverServer.exeblog

3. 瀏覽器

瀏覽器固然就是咱們很熟悉的經常使用的各類瀏覽器。

那在WebDriver腳本運行的時候,它們之間是如何通訊的呢?爲何同一個browser driver便可以處理java語言的腳本,也能夠處理python語言的腳本呢?讓咱們來看一下,一條Selenium腳本執行時後端都發生了哪些事情:

1)對於每一條Selenium腳本,一個http請求會被建立而且發送給瀏覽器的驅動
2)瀏覽器驅動中包含了一個HTTP Server,用來接收這些http請求
3)HTTP Server接收到請求後根據請求來具體操控對應的瀏覽器
瀏覽器執行具體的測試步驟
1)瀏覽器將步驟執行結果返回給HTTP Server
2)HTTP Server又將結果返回給Selenium的腳本,若是是錯誤的http代碼咱們就會在控制檯看到對應的報錯信息。

爲何使用HTTP協議呢?
WebDriver的結構中就是典型的C/S結構,WebDriver API至關因而客戶端,而小小的瀏覽器驅動纔是服務器端

那爲何同一個瀏覽器驅動便可以處理Java語言的腳本,也能夠處理Python語言的腳本呢?

這就要提到WebDriver基於的協議:JSON Wire protocol。

body部分主要傳送具體的數據,在WebDriver中這些數據都是以JSON的形式存在並進行傳送的,這就是JSON Wire protocol。

JSON是一種數據交換的格式,是對XML的升級與替代

相關文章
相關標籤/搜索