一、Selenium是什么?
用官網的一句話來講:Selenium automates browsers. That's it!簡單來講,Selenium是一個用于Web應用程序自動化測試工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作瀏覽器一樣。支持的瀏覽器包括IE,Firefox,Safari,Chrome等。Selenium 不僅僅是一個工具或 API,它還組成了許多工具
(以上用了翻譯軟件,有些翻譯不準確,閱讀時請自行斟酌)
WebDriver
如果你開始使用桌面網站或移動網站測試自動化,那么你將使用 webdriverapi。 Webdriver 使用瀏覽器廠商提供的瀏覽器自動化 api 來控制瀏覽器和運行測試。 這就好像是一個真正的用戶在操作瀏覽器。 由于 WebDriver 不需要使用應用程序代碼編譯其 API,因此它不具有侵入性。 因此,您測試的應用程序與實時推送的應用程序相同。
IDE
Ide (集成開發環境)是您用來開發 Selenium 測試用例的工具。 它是一個易于使用的 Chrome 和 Firefox 擴展,并且通常是開發測試用例的最有效的方法。 它使用現有的 Selenium 命令記錄用戶在瀏覽器中的操作,參數由該元素的上下文定義。 這不僅是一個節省時間的方法,也是學習 Selenium 腳本語法的一個很好的方法。
Grid
Selenium Grid 允許您跨不同平臺在不同的機器上運行測試用例。 觸發測試用例的控制位于本地端,當觸發測試用例時,它們將由遠程端自動執行。
在 WebDriver 測試開發之后,您可能需要在多個瀏覽器和操作系統組合上運行測試。 這就是Grid出現的地方。
二、Selenium History
2004年,誕生了Selenium Core,Selenium Core是基于瀏覽器并且采用JavaScript編程語言的測試工具,運行在瀏覽器的安全沙箱中,設計理念是將待測試產品、Selenium Core和測試腳本均部署到同一臺服務器上來完成自動化測試的工作。
? 2005年,Selenium RC誕生,就是selenium1 ,這個時候,Selenium Core其實是Selenium RC的核心。Selenium RC讓待測試產品、Selenium Core和測試腳本三者分散在不同的服務器上。(測試腳本只關心將HTTP請求發送到指定的URL上,selenium本身不需要關心HTTP請求由于什么程序編程語言編寫而成),Selenium RC包括兩部分:一個是Selenium RC Server,一個是提供各種編程語言的客戶端驅動來編寫測試腳本
? 2007年,Webdriver誕生,WebDriver的設計理念是將端到端測試與底層具體的測試工具分隔離,并采用設計模式Adapter適配器來達到目標。WebDriver的API組織更多的是面向對象。
? 2008年,selenium2誕生,selenium2其實是selenium rc和webdriver的合并,合并的根本原因是相互補充各自的缺點
? 2009年,selenium3誕生,這個版本剔除了selenium rc , 主要由 selenium webdriver和selenium Grid組成, 我們日常使用的其實就是selenium webdriver,至于selenium grid是一個分布式實現自動化測試的工具
三、Selenium原理
本文所講的Selenium是指Selenium Webdriver,Selenium WebDriver與RC的功能相同,并且包含原始的1.x綁定。它涉及語言綁定和單個瀏覽器控制代碼的實現。這通常被稱為“WebDriver”,有時也被稱為Selenium 2。Selenium 1.0 + WebDriver = Selenium 2.0
WebDriver被設計在一個更簡單和更簡潔的編程接口中,同時解決了Selenium-RC API中的一些限制。
與Selenium1.0相比,WebDriver是一個緊湊的面向對象的API
它更有效地驅動瀏覽器,并克服了Selenium 1.x的限制,這影響了我們的功能測試覆蓋范圍,如文件上傳或下載,彈出框和對話框
在用Selenium進行自動化測試時必須引入相應jar包,比如selenium-server-standalone-2.46.0.jar,selenium-java-2.47.1.jar,3+以上版本可能有所不同,我們看到有個sever這么一個jar包,這個jar包就是Selenium服務,server端可以是任何瀏覽器作為remote server,職責就是處理client的請求并作出相應操作,client就是我們運行的腳本,response的具體內容根據請求的內容而定,我們以firefox為例,如下圖所示
四、Selenium工作過程總結:
selenium client(Java等語言編寫的自動化測試腳本)初始化一個service服務,通過Webdriver啟動瀏覽器驅動程序
通過RemoteWebDriver向瀏覽器驅動程序發送HTTP請求,瀏覽器驅動程序解析請求,打開瀏覽器,并獲得sessionid,如果再次對瀏覽器操作需攜帶此id
打開瀏覽器,綁定特定的端口,把啟動后的瀏覽器作為webdriver的remote server
打開瀏覽器后,所有的selenium的操作(訪問地址,查找元素等)均通過RemoteConnection鏈接到remote server,然后使用execute方法調用_request方法通過urlib3向remote server發送請求
瀏覽器通過請求的內容執行對應動作
瀏覽器再把執行的動作結果通過瀏覽器驅動程序返回給測試腳本
五、remote server端的這些功能是如何實現的呢?
瀏覽器實現了webdriver的統一接口,client就可以通過統一的restful的接口去進行瀏覽器的自動化操作。
目前webdriver支持ie, chrome, firefox等主流瀏覽器,其主要原因是這些瀏覽器實現了webdriver約定的各種接口。
舉個打開瀏覽器的栗子:
package com.Demo;import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;public class ExampleForFirefox {public static void main(String[] args) {System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox 24\\firefox.exe");WebDriver driver = new FirefoxDriver();System.out.println("https://www.cnblogs.com/mrjade/");driver.get("https://www.cnblogs.com/mrjade/");}
}
六、附:
各版本Chrome下載地址:Google Chrome 64bit Windows版_chrome瀏覽器,chrome插件,谷歌瀏覽器下載,談笑有鴻儒
Selenium Chrome版本與chromedriver兼容版本對照表:2019 Selenium Chrome版本與chromedriver兼容版本對照表_YOYO測試的博客-CSDN博客_chrome對應selenium版本
各版本ChromeDriver下載地址:http://npm.taobao.org/mirrors/chromedriver/?
? ? ? ? ? ? ?【下面是我整理的2023年最全的軟件測試工程師學習知識架構體系圖】
一、Python編程入門到精通
二、接口自動化項目實戰?
三、Web自動化項目實戰

四、App自動化項目實戰?
五、一線大廠簡歷

六、測試開發DevOps體系?
七、常用自動化測試工具
八、JMeter性能測試?
九、總結(尾部小驚喜)
生命不息,奮斗不止。每一份努力都不會被辜負,只要堅持不懈,終究會有回報。珍惜時間,追求夢想。不忘初心,砥礪前行。你的未來,由你掌握!
生命短暫,時間寶貴,我們無法預知未來會發生什么,但我們可以掌握當下。珍惜每一天,努力奮斗,讓自己變得更加強大和優秀。堅定信念,執著追求,成功終將屬于你!
只有不斷地挑戰自己,才能不斷地超越自己。堅持追求夢想,勇敢前行,你就會發現奮斗的過程是如此美好而值得。相信自己,你一定可以做到!?
最后感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:
這些資料,對于【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴上萬個測試工程師們走過最艱難的路程,希望也能幫助到你!?