【注】本文譯自:https://www.edureka.co/blog/what-is-selenium/
??你知道什么是 Selenium 嗎?你知道為什么要使用它嗎?答案就在本文中,很高興能夠與你共飧。
??自動(dòng)化測(cè)試正席卷全球郎汪,Selenium 認(rèn)證是業(yè)界最搶手的技能之一赤赊。
什么是 Selenium?
??Selenium 是一種開源工具怒竿,用于在 Web 瀏覽器上執(zhí)行自動(dòng)化測(cè)試(使用任何 Web 瀏覽器進(jìn)行 Web 應(yīng)用程序測(cè)試)砍鸠。
??等等,先別激動(dòng)耕驰,讓我再次重申一下爷辱,Selenium 僅可以測(cè)試Web應(yīng)用程序。我們既不能使用 Selenium 測(cè)試任何桌面(軟件)應(yīng)用程序朦肘,也不能測(cè)試任何移動(dòng)應(yīng)用程序饭弓。
??這很糟糕,對(duì)吧媒抠?我能感覺到你的痛苦弟断。但請(qǐng)放心,有許多工具可以測(cè)試桌面軟件和移動(dòng)應(yīng)用程序趴生,例如:IBM 的 RFT阀趴,HP 的 QPT,Appium 等苍匆。但是刘急,本文的重點(diǎn)是測(cè)試動(dòng)態(tài) Web 應(yīng)用程序,以及為什么 Selenium 在這方面是最好的浸踩。
Selenium 的優(yōu)勢(shì)是什么?
??由于 Selenium 是開源的叔汁,因此不涉及許可費(fèi)用,這是與其他測(cè)試工具相比的主要優(yōu)勢(shì)检碗。Selenium 日益流行的其他原因是:
- 測(cè)試腳本可以用以下任何一種編程語言編寫:Java据块、Python、C#折剃、PHP另假、Ruby、Perl 和 .Net
- 可以在以下任何操作系統(tǒng)中進(jìn)行測(cè)試:Windows微驶、Mac 或 Linux
- 可以使用任何瀏覽器進(jìn)行測(cè)試:Mozilla Firefox浪谴、Internet Explorer、Google Chrome因苹、Safari 或 Opera
- 可以與 TestNG 和 JUnit 等工具集成,以管理測(cè)試用例和生成報(bào)告
- 可以與 Maven篇恒、Jenkins 和 Docker 集成以實(shí)現(xiàn)持續(xù)測(cè)試
??但總有缺點(diǎn)吧扶檐? - 我們只能使用 Selenium 來測(cè)試 Web 應(yīng)用程序。我們無法測(cè)試桌面應(yīng)用程序或任何其他軟件
- 沒有針對(duì) Selenium 的保證支持胁艰。我們需要利用現(xiàn)有的客戶社區(qū)
- 無法對(duì)圖像進(jìn)行測(cè)試款筑。我們需要將 Selenium 與 Sikuli 集成以進(jìn)行基于圖像的測(cè)試
- 沒有本機(jī)報(bào)告工具智蝠。但是我們可以通過將其與 TestNG 或 JUnit 之類的框架集成來解決該問題
??首先,讓我們了解 Selenium 是如何發(fā)展到今天的奈梳。所以杈湾,讓我們按以下順序來講解:
- 軟件測(cè)試的訴求
- 手工測(cè)試的挑戰(zhàn)
- 自動(dòng)化測(cè)試如何勝過手動(dòng)測(cè)試?
- Selenium 與其他測(cè)試工具的對(duì)比攘须?
- Selenium 套件工具
軟件測(cè)試的需要
??一切都?xì)w結(jié)為軟件測(cè)試漆撞。當(dāng)今的技術(shù)世界完全由機(jī)器控制,它們的行為被驅(qū)動(dòng)它的軟件年控制于宙。這些機(jī)器會(huì)完全按照我們希望的那樣運(yùn)行嗎浮驳?每一次、任何場(chǎng)合都符合預(yù)期嗎捞魁?這些問題的答案在于軟件測(cè)試至会。
??歸根結(jié)底,軟件應(yīng)用程序的成功率將控制你的業(yè)務(wù)增長(zhǎng)谱俭。即使對(duì)于 Web 應(yīng)用程序奉件,也可以說同樣的話,因?yàn)楫?dāng)今大多數(shù)企業(yè)都完全依賴 Internet昆著。
??以任何一家電子商務(wù)公司為例县貌。無論是 Amazon 還是 E-Bay 或 Flipkart,他們都依賴其網(wǎng)站上的客戶流量以及基于 Web 的移動(dòng)應(yīng)用程序上的業(yè)務(wù)流量宣吱。 想象一下窃这,如果發(fā)生災(zāi)難性事件,例如將許多產(chǎn)品的價(jià)格限制在 10 美元以內(nèi)征候,這都是由于代碼“不那么容易理解”部分中的一個(gè)小錯(cuò)誤所致杭攻。那該怎么辦,我們下次如何預(yù)防呢疤坝? 部署之前測(cè)試代碼兆解,對(duì)嗎? 所以跑揉,這就是軟件測(cè)試的需要锅睛。但是,Selenium 是什么历谍?它是軟件測(cè)試工具嗎现拒?好吧,Selenium 是一種自動(dòng)化測(cè)試工具望侈!
??進(jìn)一步之前印蔬,請(qǐng)讓我澄清一下,軟件測(cè)試有兩種類型:手動(dòng)測(cè)試和自動(dòng)化測(cè)試脱衙。Selenium 作為一種自動(dòng)化測(cè)試工具被創(chuàng)建侥猬,旨在克服手動(dòng)測(cè)試的弊端/局限性例驹。因此,接下來退唠,讓我們了解手動(dòng)測(cè)試的挑戰(zhàn)鹃锈。
手動(dòng)測(cè)試的挑戰(zhàn)
??手動(dòng)測(cè)試是指 QA 測(cè)試人員手動(dòng)測(cè)試(Web)應(yīng)用程序。需要在每個(gè)環(huán)境中使用不同的數(shù)據(jù)集手動(dòng)執(zhí)行測(cè)試瞧预,并且應(yīng)記錄每個(gè)事務(wù)的成功/失敗率屎债。
??看看上圖中這個(gè)糟糕的小伙子,他要手動(dòng)驗(yàn)證記錄的交易松蒜。他正面臨的挑戰(zhàn)會(huì)導(dǎo)致疲勞扔茅、無聊、工作延遲秸苗、錯(cuò)誤和失誤(由于手動(dòng)操作)召娜。這導(dǎo)致了 Selenium(自動(dòng)化測(cè)試工具)的發(fā)明。
自動(dòng)化測(cè)試勝過手動(dòng)測(cè)試
??每次自動(dòng)化測(cè)試都勝過手動(dòng)測(cè)試惊楼。為什么玖瘸?因?yàn)樗俣雀欤枰娜肆Y源投資較少檀咙,所以不容易出錯(cuò)雅倒,可以頻繁執(zhí)行測(cè)試,支持無人值守執(zhí)行弧可,支持回歸測(cè)試以及功能測(cè)試蔑匣。
??讓我們舉一個(gè)與前面提到的類似的例子。假設(shè)有一個(gè)登錄頁面棕诵,我們需要驗(yàn)證所有的登錄嘗試是否成功裁良,那么很容易編寫一段代碼來驗(yàn)證所有的事務(wù)/登錄嘗試是否成功(自動(dòng)測(cè)試用例執(zhí)行)。
??此外校套,可以以在不同環(huán)境和 Web 瀏覽器中對(duì)它們進(jìn)行測(cè)試的方式配置這些測(cè)試价脾。我們還能做些什么?您可以通過安排一天中的特定時(shí)間來自動(dòng)生成結(jié)果文件笛匙。然后侨把,您還可以根據(jù)這些結(jié)果自動(dòng)生成報(bào)告。
??關(guān)鍵是自動(dòng)化測(cè)試使測(cè)試人員的工作變得更加簡(jiǎn)單妹孙。如下圖所示秋柄,顯示了一個(gè)更寬松的環(huán)境,同樣的測(cè)試人員正在工作蠢正。
??現(xiàn)在华匾,讓我特別談?wù)?Selenium。
??讓我們看看 Selenium 在市場(chǎng)上的地位机隙。
Selenium 對(duì)比 QTP 和 RFT
??我在下表中將其性能與其他兩個(gè)流行工具進(jìn)行了比較:QTP和RFT蜘拉。
特性 | HP QTP | IBM RFT | Selenium | |
---|---|---|---|---|
授權(quán) | 需要 | 需要 | 開源 | |
費(fèi)用 | 高 | 高 | 開源 | |
軟件客戶支持 | HP 專有支持 | IBM 專有支持 | 開源社區(qū) | |
腳本執(zhí)行期間的硬件消耗 | 高 | 高 | 低 | |
編碼經(jīng)驗(yàn) | 不需要 | 需要 | 需要足夠的編碼技巧和經(jīng)驗(yàn) | |
環(huán)境支持 | 僅支持 Windows | 僅支持 Windows | Windows,Linux有鹿,Solaris OS X(如果存在瀏覽器和 JVM或 JavaScript 支持) | |
語言支持 | VB Script | Java 和 C# | Java旭旭、C#、Ruby葱跋、Python持寄、Perl、PHP 和 JavaScript |
??從上表可以很清楚地看出 Selenium 是最受青睞的工具娱俺。但是 Selenium 中有很多不同的風(fēng)格稍味,您應(yīng)該知道哪種 Selenium 工具最適合你的需要。
Selenium 工具套件
- Selenium RC (現(xiàn)在已廢棄)
- Selenium IDE
- Selenium Grid
- Selenium WebDriver
Selenium 有哪些組件?
??下面我詳細(xì)解釋了 Selenium 的各個(gè)組成:
Selenium RC (遠(yuǎn)程控制)
??在談?wù)?Selenium RC 的細(xì)節(jié)之前荠卷,我想回過頭來談?wù)?Selenium 項(xiàng)目中的第一個(gè)工具模庐。Selenium Core 是第一個(gè)工具。但是油宜,由于采用了同源策略掂碱,Selenium Core 在跨域測(cè)試方面遇到了障礙。同源策略禁止 JavaScript 代碼訪問與啟動(dòng) JavaScript 的位置不同的域上托管的 Web 元素慎冤。
??為了克服同源策略問題疼燥,測(cè)試人員需要安裝 Selenium Core(JavaScript程序)和包含要測(cè)試的 Web 應(yīng)用程序的 Web 服務(wù)器的本地副本,以便它們屬于同一域蚁堤。這導(dǎo)致了 Selenium RC 的誕生醉者,這是當(dāng)時(shí) ThoughtWork 的工程師 Paul Hammant 認(rèn)可的。RC 通過使用 HTTP 代理服務(wù)器來“欺騙”瀏覽器披诗,使其相信 Selenium Core 和被測(cè)試的 Web 應(yīng)用程序來自同一域撬即,從而解決了該問題。因此藤巢,使 RC 成為雙組件工具搞莺。
- Selenium RC 服務(wù)器
- Selenium RC 客戶端 – 包含編程語言代碼的庫
??RC Server 使用簡(jiǎn)單的 HTTP GET / POST 請(qǐng)求進(jìn)行通信。查看下圖以了解 RC 架構(gòu)掂咒。
??Selenium 項(xiàng)目的旗艦工具是 Selenium RC才沧,這是他們的第一個(gè)工具,可以用來以不同的編程語言編寫測(cè)試用例绍刮。但是 RC 的缺點(diǎn)是與 RC 服務(wù)器的每次通信都很耗時(shí)温圆,因此RC非常慢。太慢了孩革,有時(shí)一次測(cè)試要花上幾個(gè)小時(shí)岁歉。??從 Selenium v3 開始,RC 已棄用膝蜈,并轉(zhuǎn)移到遺留軟件包中锅移。您依然可以下載并使用 RC熔掺,但是很遺憾,已經(jīng)無法得到支持非剃。但另一方面置逻,為什么要使用一個(gè)過時(shí)的工具,尤其是當(dāng)有一個(gè)更有效的工具 Selenium WebDriver 時(shí)备绽。在談?wù)揥ebDriver之前券坞,讓我討論一下IDE 和 Grid,它們是構(gòu)成 Selenium v1 的其他工具肺素。
Selenium IDE(集成開發(fā)環(huán)境)
??2006年恨锚,日本的 Shinya Kastani 將他的 Selenium IDE 原型捐贈(zèng)給了 Apache 的 Selenium 項(xiàng)目。這是一個(gè)用于快速創(chuàng)建測(cè)試用例的 Firefox 插件倍靡。IDE 實(shí)施了記錄和回放模型猴伶,其中通過記錄用戶與 Web 瀏覽器的交互來創(chuàng)建測(cè)試用例。這些測(cè)試然后可以播放任意次菌瘫。
??Selenium IDE 的優(yōu)勢(shì)在于蜗顽,通過插件記錄的測(cè)試可以以不同的編程語言導(dǎo)出,例如:Java雨让、Ruby雇盖、Python 等。請(qǐng)查看以下 Firefox IDE 插件的屏幕截圖栖忠。
??但是崔挖,IDE的相關(guān)缺點(diǎn)是:
- 插件僅適用于 Mozilla Firefox;不適用于其他瀏覽器
- 無法測(cè)試動(dòng)態(tài) Web 應(yīng)用程序庵寞。只能記錄簡(jiǎn)單的測(cè)試
- 測(cè)試用例不能使用編程邏輯編寫腳本
- 不支持?jǐn)?shù)據(jù)驅(qū)動(dòng)測(cè)試
??這些是 Selenium IDE 的一些方面±晗啵現(xiàn)在讓我談?wù)?Selenium Grid。
什么是 Selenium Grid
??Selenium Grid 由 Patrick Lightbody 開發(fā)捐川,最初稱為 HostedQA(最初是 Selenium v1 的一部分)脓鹃,它與 RC 結(jié)合使用以在遠(yuǎn)程計(jì)算機(jī)上運(yùn)行測(cè)試。實(shí)際上古沥,使用 Grid 可以在多臺(tái)計(jì)算機(jī)上同時(shí)執(zhí)行多個(gè)測(cè)試腳本瘸右。
??借助 Hub-Node 架構(gòu)實(shí)現(xiàn)并行執(zhí)行。一臺(tái)機(jī)器將承擔(dān)集線器的角色岩齿,其他機(jī)器將充當(dāng)節(jié)點(diǎn)太颤。集線器控制在各種操作系統(tǒng)內(nèi)的各種瀏覽器上運(yùn)行的測(cè)試腳本。在不同節(jié)點(diǎn)上執(zhí)行的測(cè)試腳本可以用不同的編程語言編寫盹沈。
??Grid 仍在使用龄章,并且可以與 WebDriver 和 RC 一起使用。但是,使用所有必需的瀏覽器和操作系統(tǒng)維護(hù)網(wǎng)格是一個(gè)挑戰(zhàn)做裙。為此岗憋,有多個(gè)在線平臺(tái)可提供在線 Selenium Grid,您可以訪問它們以運(yùn)行 Selenium 自動(dòng)化腳本菇用。例如澜驮,您可以使用 LambdaTest。它具有2000 多種瀏覽器環(huán)境惋鸥,您可以在這些環(huán)境中運(yùn)行測(cè)試,并真正實(shí)現(xiàn)跨瀏覽器測(cè)試的自動(dòng)化悍缠。
什么是 Selenium WebDriver
??Selenium WebDriver 由 Simon Stewart 于 2006 年創(chuàng)立卦绣,它是第一個(gè)可以從操作系統(tǒng)級(jí)別控制瀏覽器的跨平臺(tái)測(cè)試框架。與 IDE 相比飞蚓,Selenium WebDriver 提供了一個(gè)編程接口來創(chuàng)建和執(zhí)行測(cè)試用例滤港。編寫測(cè)試用例,以便識(shí)別網(wǎng)頁上的 Web 元素趴拧,然后對(duì)這些元素執(zhí)行操作溅漾。
??WebDriver 是 RC 的升級(jí),因?yàn)樗俣雀熘瘛K焯砺模驗(yàn)樗梢灾苯诱{(diào)用瀏覽器。另一方面脑又,RC 需要 RC 服務(wù)器與 Web 瀏覽器進(jìn)行交互暮胧。每個(gè)瀏覽器都有自己的驅(qū)動(dòng)程序,應(yīng)用程序可以在該驅(qū)動(dòng)程序上運(yùn)行问麸。不同的 WebDrivers 是:
- Firefox Driver (Gecko Driver)
- Chrome Driver
- Internet Explorer Driver
- Opera Driver
- Safari Driver and
- HTM Unit Driver
Selenium WebDriver 的好處
- 支持 7 種編程語言:JAVA往衷、C#、PHP严卖、Ruby席舍、Perl、Python 和 .Net
- 支持在不同瀏覽器進(jìn)行測(cè)試哮笆,如:Firefox来颤、Chrome、IE疟呐、Safari
- 支持在不同操作系統(tǒng)上執(zhí)行測(cè)試脚曾,如:Windows、Mac启具、Linux本讥、Android、iOS
- 克服了 Selenium v1 的局限性,例如文件上傳拷沸、下載色查、彈出窗口和對(duì)話欄
Selenium WebDriver 的缺點(diǎn)
- 無法生成詳細(xì)的測(cè)試報(bào)告
- 無法測(cè)試圖像
??不管緊致什么挑戰(zhàn),這些缺點(diǎn)都可以通過與其他框架集成來克服撞芍。對(duì)于測(cè)試圖像秧了,可以使用 Sikuli,對(duì)于生成詳細(xì)的測(cè)試報(bào)告序无,可以使用 TestNG验毡。