selenium3 解析


selenium下載地址統計:

chromedriver:http://chromedriver.storage.googleapis.com/index.html?path=2.31/

geckodriver:   https://github.com/mozilla/geckodriver/releases

一.selenium框架結構

selenium 分為三大架構:SeleniumIDE、Selenium WebDriver、Selenoium Grid

  • Selenium IDE:錄制和回放腳本,可以模擬用戶對頁面的真實操作,區別於其他工具:是通過攔截http請求。
    • 一般只把錄制腳本當作一個輔助功能,因為一個UI節點的細微變化,都可能導致自動化測試工具無法識別,當測試項目項目大時,定位、更新十分困難。
    • 其次,錄制的腳本有時候人工難以理解。
  • Selenium Grid:實現在多台機器上、和異構環境中並行執行測試用例。並行執行不僅節省時間,而且可以同時在不同的瀏覽器、平台上運行自動化測試腳本。
  • Selenium Web Driver:針對各個瀏覽器而開發,通過原生瀏覽器支持或者擴展(Chrome webDrive、FireFox WebDriver)直接控制瀏覽器

          VS Selenium RC(Selenium1.0):在瀏覽器中運行javaScript,使用瀏覽器內置的JavaScript來翻譯和執行selense

 

二、selenium運行機制,(基於firefox)

為了方便講解,下面將會基於firefox進行講解。

2.1 基礎知識

1.瀏覽器內核

“瀏覽器內核”主要指渲染引擎(Rendering Engine),負責解析網頁語法(如HTML、JavaScript)並渲染、展示網頁。因此,所謂的瀏覽器內核通常也就是指瀏覽器所采用的渲染引擎,渲染引擎決定了瀏覽器如何顯示網頁的內容以及頁面的格式信息。不同的瀏覽器內核對網頁編寫語法的解析也有所不同,因此同一網頁在不同的內核瀏覽器里的渲染、展示效果也可能不同。

  瀏覽器內核種類繁多,商用的加上非商業的免費內核,大約會超過10款,目前主流的四大瀏覽器內核Trident、Gecko、WebKit以及Presto。Gecko就是firefox的內核。

2.Marionette

Marionette是Mozilla的Gecko引擎的自動化驅動程序。它可以遠程控制Gecko平台(如Firefox)的UI或內部JavaScript。它可以控制chrome(即菜單和功能)或內容(瀏覽上下文中加載的網頁),提供高水平的控制和復制用戶操作的能力。除了在瀏覽器上執行操作之外,Marionette還可以讀取DOM的屬性和屬性。

3.geckodirver

geckodriver是Selenium FirefoxDriver的下一代。它是由Marionette支持的Geodo / Firefox遠程協議。使用W3C WebDriver協議兼容客戶端與基於Gecko的瀏覽器交互的代理。可見:它是充當本地和遠程之間的代理,並將呼叫轉換為Firefox遠程協議

2.2 selenium運行機制-----webDdriver模式

webDriver是按照client/server模式設計的。client是我們的測試腳本,發送請求;server就是打開的瀏覽器,用來接收client的請求並作出響應。

具體的工作流程:

  1. webDriver調用geckodriver程序打開瀏覽器並綁定到指定端口。啟動的瀏覽器作為遠程服務器remote server
  2. client通過CommandExecuter json 一段字符串給遠程服務器的偵聽端口(the wire protocal)
  3. 遠程服務器根據原生的瀏覽器組件將字符串轉化為瀏覽器的本地(native)調用

所以web Driver用到的協議

  1. 打開瀏覽器時:HTTP協議
  2. client端發送json請求到遠程服務器的偵聽端口:the wire protocol

其中:

  • 有線協議:指的是從點到點獲取數據的方式,是應用層的協議。
  • HTTP協議:是用於從服務器傳輸超文本標記語言HTML到客戶端的通信協議。是一個應用層協議,由請求/響應構成,是一個標准的客戶/服務器模式。是一個無狀態的協議。(無狀態:對事務沒有記憶能力,不會保存這次傳輸的信息——節約內存)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM