『心善淵』Selenium3.0基礎 — 1、Selenium自動化測試框架介紹

1、Selenium介紹

  • Selenium是一個用於Web應用程序測試的工具。
    只要在測試用例中把預期的用戶行為與結果都描述出來,我們就得到了一個可以自動化運行的功能測試套件。
  • Selenium測試套件直接運行在瀏覽器中,就像真正的用戶在操作瀏覽器一樣。
  • Selenium也是一款同樣使用Apache License 2.0協議發佈的開源框架。
  • Selenium工具的主要功能包括:
    • 測試程序與瀏覽器的兼容性,測試你的應用程序是否能夠很好得工作在不同瀏覽器和操作系統之上。
    • 測試系統功能,創建回歸測試檢驗軟件功能和用戶需求。

2、Selenium的特點

  1. 開源,免費。
  2. 多瀏覽器支持:FireFoxChromeIEOperaSafari
  3. 多平台支持:Linux、Windows、MAC。
  4. 多語言支持:JavaPythonRubyphpC#JavaScript等。
  5. 對WEB頁面有良好的支持。
  6. 簡單(API簡單)、靈活(用開發語言驅動)。
  7. 支持分佈式測試用例執行。

3、Selenium版本說明

從2004年至今,Selenium經歷了3個版本,即Selenium1.0Selenium2.0Selenium3.0

(1)Selenium1.0

Selenium 1.0包括:Selenium IDESelenium GridSelenium RC三部分。

  • Selenium IDE:是Firefox瀏覽器中的一個插件,實現簡單的瀏覽器操作的錄製與回放功能。生成測試用例,可將測試用例轉換為其他語言的自動化腳本。如果沒有編程經驗,可以通過Selenium IDE來快速熟悉Selenium的命令。(只適用於火狐瀏覽器)
  • Selenium Grid:分佈式測試。用於運行在不同的機器,不同的瀏覽器並行測試的工具,目的在於加快測試用例運行的速度,從而減少測試運行的總時間。利用Grid可以很方便地實現在多台機器上和異構環境中運行測試用例。
  • Selenium RCSelenium RCSelenium1.0核心部分。簡單的說,Selenium RC的功能就是通過代碼操作瀏覽器。

(2)Selenium2.0

Selenium 2.0 = Selenium 1.0 + WebDriver

WebDriverSelenium RC功能強大且簡單。WebDriver是通過原生瀏覽器支持或者瀏覽器擴展來直接控制瀏覽器。WebDriver針對各個瀏覽器而開發,使用不同瀏覽器都需要對應瀏覽器驅動,與瀏覽器緊密集成,因此支持創建更高級的測試,避免了JavaScript安全模型導致的限制。除了來自瀏覽器廠商的支持之外,WebDriver還利用操作系統級的調用,模擬用戶輸入。我們在使用WebDriver時,可以看到,是先啟動了瀏覽器對應driver,通過瀏覽器driver啟動瀏覽器。

(3)Selenium3.0(推薦)

Selenium 3.0Selenium2.0的基礎上有了更多的改進,支持的原生驅動方面更為豐富。

去掉了對SeleniumRC的支持。

JDK的最低版本要求為JDK8(只有在測試分佈式的時候,才需要Java環境)。

(4)提示

Selenium 3.0Selenium 2.0的基礎上增加了對Win10系統的Edge瀏覽器和Mac系統Safari瀏覽器的支持,並且在啟動Firefox瀏覽器時也必須使用瀏覽器驅動geckodriver。去掉了Selenium RC,因此Selenium 3.0的學習核心也是WebDriver。

(5)Selenium組件總結

image

4、拓展:WebDriver與Selenium RC的區別

(1)Selenium RC

Selenium RC 使用的是javascript注入的方式跟瀏覽器打交道。這樣 Selenium RC 需要啟動一個Server,然後將操作頁面元素的API 轉成javascript腳本,再把這段腳本注入到瀏覽器中去執行。而通過這種javascript注入的方式一來太依賴翻譯成javascript質量的好壞,二來javascript存在同源問題。這使測試變得不那麼容易。

總結:

  1. Selenium RC需要Selenium Server才能運行測試用例。
  2. Selenium RC使用JavaScript來驅動瀏覽器運行測試用例。
  3. Selenium RC只能支持Web應用的測試。
  4. Selenium RC能支持所有瀏覽器但並不能及時支持最新版本。

(2)WebDriver

Selenium RC 不同的是Selenium WebDriver 針對不同的瀏覽器進行獨立開發Driver,利用瀏覽器的原生API去直接操作瀏覽器和頁面元素,這樣大大提高了測試的穩定性和速度。當然因為不同的瀏覽器對Web元素操作和呈現多多少少會存在一些差異,這也就造成現在不同的瀏覽器需要有對應不同的Driver

總結:

  1. WebDriver不需要Selenium Server就可以運行測試用例。
  2. WebDriver獨立使用原生瀏覽器來運行測試用例。
  3. WebDriver既可以測試傳統桌面Web應用,也可以測試手機上的應用程序,如iPhone或Android上的app程序。
  4. WebDriver能支持大多數瀏覽器的最新版本。

(3)總結:

image

5、Webdriver工作原理

如下圖所示:

image

參考: