天天看點

Selenium1、Selenium2、Selenium3的差別

一、 selenium 1的原理

  selenium 1 包括以下兩部分:selenium server、 client libraries組成

  1. selenium server

  selenium server負責控制浏覽器的行為。主要有launcher,http proxy,selenium core。selenium core使用selenium server嵌入到浏覽器頁面中。實質上,selenium core是由js函數組成,這樣我們可以實作用程式對浏覽器進行操作。

  2. client libraries

  編寫測試用例時控制selenium server的庫

  3. selenium rc與testcase之間的關系

Selenium1、Selenium2、Selenium3的差別

  4. testcase 工作過程

  (1).測試案例(testcase)通過client lib的接口向selenium server發送http請求,要求和selenium server建立連接配接。

  為什麼要通過發送http請求控制selenium server而不采用其他方式呢?從上文可以看出,selenium server是一個獨立的中間伺服器(确切地說是代理伺服器),它可以架設在其他機器上!是以測試案例通過發送http請求去控制selenium server是很正常的。

  (2).selenium server的launcher啟動浏覽器,把selenium core加載入浏覽器頁面當中,并把浏覽器的代理設定為selenium server的http proxy。

  (3).測試案例通過client lib的接口向selenium server發送http請求,selenium server對請求進行解析,然後通過http proxy發送js指令通知selenium core執行操作浏覽器的動作。

  (4).selenium core接收到指令後,執行操作。

  (5).浏覽器收到新的頁面請求資訊(因為在(4)中,selenium core的操作可能引發新的頁面請求),于是發送http請求,請求新的web頁面。

  由于selenium server在啟動浏覽器時做了手腳,是以selenium server會接收到所有由它啟動的浏覽器發送的請求。

  (6).selenium server接收到浏覽器的發送的http請求後,自己重組http請求,擷取對應的web頁面。

  (7).selenium server的http proxy把接收的web頁面傳回給浏覽器。

二、 selenium 2-selenium webdriver原理

  1. 直接利用浏覽器原生的api,封裝成更加面向對象的selenium webdriver api,直接操作浏覽器頁面裡的元素,甚至操作浏覽器本身。如:截屏、視窗大小、啟動、關閉、安裝插件、配置證書等。

  2. selenium 2是基于對象的測試。不同的對象擁有不同的操作方法。selenium 1則更多的基于方法的api。

  3. webdriver還支援android和ios上的浏覽器

  4. 便于與junit和testng結合

  5. selenium grid實作多平台同時測試,滿足相容性測試需求

二、 selenium 3原理

1.selenium 3.0有了更新的特性加入,尤其是對edge和safari原生驅動的支援,edge驅動由ms提供,safari原生驅動由apple提供。

2.在最新的firefox方面,開始支援mlzilla的geckodriver驅動,來驅動firefox的控制。

3.selenium3.0可以支援firefox47以上版本,但是許要下載下傳geckodriver.exe驅動,并添加到環境變量path下

selenium 1.0包括:selenium ide、selenium grid、selenium rc三部分。 selenium ide:firefox的一個插件,可以錄制和回放腳本。 selenium grid:用于實作分布式測試。利用grid,可以很友善地同時在多台機器上和異構環境中并行運作多個測試事例。 selenium rc:selenium 的核心部分,可以實作利用selenium的代理伺服器來實作通路浏覽器實作自動化測試。 其中:selenium rc分為:client和selenium server。 client實作自動化腳本,selenium server負責控制浏覽器行為。 selenium server分為3部分。 launcher:啟動浏覽器 http proxy:selenium server的http代理 core:嵌入到浏覽器的js代碼。 有launcher啟動浏覽器,将core嵌入到浏覽器,并把浏覽器代理設定為selenium server的http proxy。

使用的是javascript注入技術與浏覽器打交道,需要selenium rc啟動一個server,将操作web元素的api調用轉化為一段段javascript,在selenium核心啟動浏覽器之後注入這段javascript。開發過web應用的人都知道,javascript可以擷取并調用頁面的任何元素,自如的進行操作。由此才實作了selenium的目的:自動化web操作。這種javascript注入技術的缺點是速度不理想,而且穩定性大大依賴于selenium核心對api翻譯成的javascript品質高低。