無代碼開發(fā)平臺(國內(nèi)無代碼開發(fā)平臺推薦)">國內(nèi)無代碼開發(fā)平臺(國內(nèi)無代碼開發(fā)平臺推薦)
930
2025-04-03
Selenium不僅僅是一個工具或API,它還包含許多工具。
WebDriver
如果你開始使用桌面網(wǎng)站測試自動化,那么你將使用WebDriver APIs。WebDriver使用瀏覽器供應(yīng)商提供的瀏覽器自動化API來控制瀏覽器和運行測試。就像真正的用戶在操作瀏覽器一樣。由于WebDriver不要求使用應(yīng)用程序代碼編譯其API,它本質(zhì)上不具有入侵性。因此,你測試的應(yīng)用程序與實時推送的應(yīng)用程序相同。
入侵性:當(dāng)代碼引入了一個組件,導(dǎo)致其它代碼或者設(shè)計要做相應(yīng)的更改以適應(yīng)新組件,這樣的情況我們就認(rèn)為這個新組件具有侵入性。代碼設(shè)計應(yīng)做到"高內(nèi)聚,低耦合",為了實現(xiàn)這個思路就必須降低代碼的入侵性。
Selenium IDE
Selenium IDE(Integrated Development Environment,集成開發(fā)環(huán)境)是用來開發(fā)Selenium測試用例的工具。這是一個易于使用的Chrome和Firefox瀏覽器拓展,通常是開發(fā)測試用例最有效率的方式。它使用現(xiàn)有的Selenium命令記錄用戶在瀏覽器中的操作,參數(shù)由元素的上下文確定。這不僅節(jié)省了開發(fā)時間,而且是學(xué)習(xí)Selenium腳本語法的一種很好的方法。
Grid
Selenium Grid允許你在不同平臺的不同機器上運行測試用例。可以本地控制測試用例的操作,當(dāng)測試用例被觸發(fā)時,它們由遠(yuǎn)端自動執(zhí)行。
當(dāng)開發(fā)完WebDriver測試之后,你可能需要在多個瀏覽器和操作系統(tǒng)的組合上運行測試。這就是Grid的用途所在。
了解組件
使用WebDriver構(gòu)建測試套件需要理解并有效地使用許多不同的組件。就像軟件中的一切那樣,不同的人對同一個想法使用不同的術(shù)語。
專業(yè)術(shù)語
API:應(yīng)用程序編程接口。這是一組用來操作WebDriver的指令。
庫:一個代碼模塊,它包含API和實現(xiàn)這些API所需的代碼。庫是對應(yīng)于具體的語言的,例如Java的.jar文件,.NET的.dll文件等等。
驅(qū)動程序:負(fù)責(zé)控制實際的瀏覽器。大多數(shù)驅(qū)動程序是由瀏覽器廠商自己創(chuàng)建的。驅(qū)動程序通常是與瀏覽器一起在系統(tǒng)上運行的可執(zhí)行模塊,而不是在執(zhí)行測試套件的系統(tǒng)上。有些人把驅(qū)動稱為代理。
框架:用于支持WebDriver套件的附加庫。這些框架可能是測試框架,如JUnit或NUnit。也可能是支持自然語言特性的框架,如Cucumber或Robotium。還可以編寫和使用框架來操作或配置被測試的系統(tǒng)、數(shù)據(jù)創(chuàng)建、測試預(yù)言等等。
組成部分
WebDriver通過一個驅(qū)動程序與瀏覽器對話。通信有兩種方式:WebDriver通過驅(qū)動程序向瀏覽器傳遞指令,然后通過相同的路徑接收信息。
驅(qū)動程序是特定于瀏覽器的,例如ChromeDriver對應(yīng)于谷歌的Chrome/Chromium,GeckoDriver對應(yīng)于Mozilla的Firefox等等。驅(qū)動程序在與瀏覽器相同的系統(tǒng)上運行。這可能與執(zhí)行測試本身的系統(tǒng)相同也可能不同。
上圖的通信方式就是直接通信。與瀏覽器的通信也可以是通過Selenium服務(wù)器或者RemoteWebDriver進行遠(yuǎn)程通信。RemoteWebDriver與驅(qū)動程序和瀏覽器運行在同一系統(tǒng)上。
遠(yuǎn)程通信也可以使用Selenium Sever或Selenium Grid進行,這兩者依次與主機系統(tǒng)上的驅(qū)動程序進行通信。
應(yīng)用框架
WebDriver有且只有一個任務(wù):通過上面的任何方法與瀏覽器通信。WebDriver對測試不了解:它不知道如何比較事物、斷言通過或失敗,也不知道報告或者Given/When/Then語法。
這就是各種框架發(fā)揮作用的地方。至少你需要一個與綁定語言相匹配的測試框架,比如.NET的NUnit,Java的JUnit,Ruby的RSpec等等。
測試框架負(fù)責(zé)運行和執(zhí)行WebDriver以及測試中相關(guān)步驟。因此,可以看做類似下圖。
像Cucumber這種自然語言框架/工具可能作為上圖中測試框架的一部分存在,或者它們可能將測試框架完全封裝在自己的實現(xiàn)中。
深度介紹
Selenium是一系列工具和庫的綜合項目,這些工具和庫支持Web瀏覽器的自動化。
Selenium控制網(wǎng)頁瀏覽器
Selenium有很多功能,但其核心是Web瀏覽器自動化的一個工具集,它使用最好的技術(shù)來遠(yuǎn)程控制瀏覽器實例,并模擬用戶與瀏覽器的交互。
它允許用戶模擬終端用戶執(zhí)行的常見活動,比如將文本輸入到字段中,選擇下拉值和復(fù)選框,并單擊文檔中的鏈接。還提供了許多其他控件,比如鼠標(biāo)移動、任意JavaScript執(zhí)行等等。
雖然Selenium主要用于網(wǎng)站的前端測試,但其核心是瀏覽器用戶代理庫。這些接口在應(yīng)用程序中無處不在,它們鼓勵與其他庫進行組合以滿足目的。
一個接口來統(tǒng)治它們
該項目的指導(dǎo)原則之一就是支持所有主流瀏覽器技術(shù)的通用接口。Web瀏覽器是非常復(fù)雜的,高度工程化的應(yīng)用程序,以完全不同的方式執(zhí)行它們的操作,但在執(zhí)行這些操作時,通常看起來是跟平常使用一樣的。Selenium進行了抽象,向編寫代碼的人隱藏了它們的細(xì)節(jié)和復(fù)雜性。這將允許用戶只要編寫幾行代碼就能執(zhí)行一個復(fù)雜的工作流程,但這幾行代碼將在Firefox、Internet Explorer、Chrome和所有其他支持的瀏覽器上執(zhí)行。
工具和支持
Selenium的極簡設(shè)計方式使其具有通用性,可以作為更大應(yīng)用程序中的組件。Selenium保護傘下提供的周邊基礎(chǔ)設(shè)施為你提供了組合自己的Grid工具, 因此測試就可以在不同機器、不同瀏覽器和不同操作系統(tǒng)上運行。
想象一下,服務(wù)器機房或數(shù)據(jù)中心的一組計算機同時啟動瀏覽器,訪問站點的鏈接、表單和表格-全天候24小時測試應(yīng)用程序。通過最常見的語言提供的簡單編程接口,這些測試將不知疲倦并行運行,當(dāng)錯誤發(fā)生時生成報告。
通過用戶提供工具和文檔,不僅可以控制瀏覽器,還可以方便地拓展和部署這些Grid,從而幫助你實現(xiàn)目標(biāo)。
誰使用Selenium
世界上很多公司都在基于瀏覽器的測試中采用Selenium,取代了多年來涉及其他專有工具的工作。隨著Selenium越受歡迎,需求和挑戰(zhàn)也成倍增長。
隨著網(wǎng)絡(luò)越來越復(fù)雜,新的技術(shù)被添加到網(wǎng)站上,這個項目的任務(wù)就是盡可能跟上它們。作為一個開源項目,這種支持是通過許多志愿者的慷慨捐贈來提供的,每個志愿者都有一個"日常工作"。
該項目的另一個任務(wù)是鼓勵更多的志愿者參與到這項工作中來, 并建立一個強大的社區(qū),以便項目能夠繼續(xù)跟上新興的技術(shù), 并繼續(xù)成為功能測試自動化的主導(dǎo)平臺。
API Selenium web前端
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。