成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

手把手教您認(rèn)識(shí)、搭建和使用Selenium WebDriver

譯文
開(kāi)發(fā) 架構(gòu)
本文將和您討論什么是Selenium WebDriver、它的架構(gòu)組成、如何搭建自動(dòng)化測(cè)試、以及一個(gè)簡(jiǎn)單示例。

【51CTO.com快譯】Selenium是用于Web應(yīng)用程序測(cè)試的最廣泛的自動(dòng)化框架之一。它可以通過(guò)自動(dòng)執(zhí)行瀏覽器測(cè)試,以簡(jiǎn)化我們花費(fèi)在質(zhì)量檢查上的人工測(cè)試工作。Selenium WebDriver是Selenium套件中的一個(gè)關(guān)鍵組件。本文將和您討論什么是Selenium WebDriver、它的架構(gòu)組成、如何搭建自動(dòng)化測(cè)試、以及一個(gè)簡(jiǎn)單示例。

什么是Selenium?

作為一個(gè)開(kāi)源的自動(dòng)化測(cè)試框架,Selenium可以在不同的瀏覽器和平臺(tái)上執(zhí)行應(yīng)用測(cè)試。其主要特征包括:

  • Selenium支持包括:Java、Python、C#、JavaScript、Ruby、PHP和Perl在內(nèi)的多種編程語(yǔ)言。
  • Selenium測(cè)試可以在諸如:Firefox、Chrome、Internet Explorer、Safari、以及Opera等多種瀏覽器上執(zhí)行。
  • Selenium與平臺(tái)無(wú)關(guān),也就是說(shuō),如果您在Windows系統(tǒng)上編寫(xiě)的Selenium測(cè)試,完全可以被輕松地執(zhí)行在Linux或macOS上。
  • Selenium具有廣泛的社區(qū),可以隨時(shí)獲得各種技術(shù)支持。
  • 并行測(cè)試是Selenium的主要功能之一。

Selenium的組成

如前所述,由于Selenium是一個(gè)框架,而不是單個(gè)軟件,因此它是由不同組件所組成的套件。如下圖所示,Selenium套件具有四個(gè)主要部分:

Selenium IDE

Selenium IDE(集成開(kāi)發(fā)環(huán)境)是一種簡(jiǎn)單易學(xué)的框架。它可以作為Mozilla Firefox和Google Chrome的瀏覽器插件。您無(wú)需具備任何編程語(yǔ)言方面的經(jīng)驗(yàn),即可使用該IDE。通過(guò)它提供的記錄和回放方法,您可以記錄測(cè)試的步驟,并導(dǎo)入自己的首選編程語(yǔ)言,進(jìn)而使用Selenium WebDriver來(lái)開(kāi)展各項(xiàng)測(cè)試。因此,為了創(chuàng)建測(cè)試原型,您可以從Selenium官方網(wǎng)站-- https://www.selenium.dev/selenium-ide/,下載Selenium IDE。

Selenium RC

Selenium RC是一種服務(wù)器,它讓用戶(hù)能夠用任何被支持的語(yǔ)言,來(lái)創(chuàng)建測(cè)試腳本。與Selenium IDE不同,它沒(méi)有記錄和回放功能,但支持并行和遠(yuǎn)程的方式被執(zhí)行。作為Selenium1.0,它自身的諸多限制與缺陷,直接催生了Selenium WebDriver。

Selenium WebDriver

Selenium WebDriver克服了Selenium RC的局限性。與Selenium RC不同的是,Selenium WebDriver不需要依賴(lài)JavaScript,即可通過(guò)直接通信來(lái)控制瀏覽器。與IDE和RC相比,它具有更快的執(zhí)行時(shí)間,有時(shí)也被稱(chēng)為Selenium 2.0。鑒于其強(qiáng)大的功能,Selenium WebDriver被廣泛地使用在創(chuàng)建自動(dòng)測(cè)試用例的場(chǎng)景中。

Selenium Grid

通過(guò)與Selenium RC的配合使用,Selenium Grid能夠方便用戶(hù)在不同的瀏覽器和計(jì)算機(jī)上執(zhí)行并行測(cè)試。也就是說(shuō),用戶(hù)可以在多個(gè)環(huán)境中同時(shí)運(yùn)行并行測(cè)試,進(jìn)而節(jié)省了大量的時(shí)間。Selenium Grid啟用了集線器節(jié)點(diǎn)的概念,實(shí)現(xiàn)了每個(gè)節(jié)點(diǎn)都能夠從位于中心處的集線器上接收命令。

Selenium WebDriver與Selenium RC不同之處

Selenium WebDriver和Selenium RC之間的區(qū)別主要體現(xiàn)在如下方面:

架構(gòu)上的差異

與Selenium RC相比,Selenium WebDriver的架構(gòu)更簡(jiǎn)單。WebDriver通過(guò)操作系統(tǒng)來(lái)控制瀏覽器。也就是說(shuō),在使用WebDriver時(shí),您只需要將編程語(yǔ)言與瀏覽器的驅(qū)動(dòng)程序綁定即可。而Selenium RC則要求在運(yùn)行測(cè)試之前,先運(yùn)行Selenium的遠(yuǎn)程控制服務(wù)器。

Selenium RC實(shí)際上充當(dāng)?shù)氖荢elenium代碼和瀏覽器之間的中間層,它能夠?qū)elenium Core(一種Javascript程序)注入瀏覽器,以便其內(nèi)核通過(guò)RC服務(wù)器,接收由程序給出的指令。RC服務(wù)器在收到瀏覽器的響應(yīng)后,會(huì)直接將結(jié)果顯示給最終用戶(hù)。

執(zhí)行速度上的差異

在Selenium RC中,每條指令都需要遵循冗長(zhǎng)的處理過(guò)程,而在Selenium WebDriver中,它們可以通過(guò)直接交互,來(lái)縮短整個(gè)生命周期。具體而言:

  • Selenium WebDriver直接與瀏覽器交互,并調(diào)用瀏覽器引擎來(lái)對(duì)其進(jìn)行控制,因此執(zhí)行的速度非常快。
  • Selenium RC需要首先將Selenium命令轉(zhuǎn)換為控制Web瀏覽器的Selenium Core,因此執(zhí)行的速度較慢。

互動(dòng)上的差異

  • Selenium WebDriver通過(guò)直接與Web瀏覽器通信,來(lái)模仿真實(shí)際使用中的交互。例如:如果某些Web元素被隱藏或禁用,那么WebDriver將無(wú)法像普通用戶(hù)那樣找到它們。
  • Selenium RC使用與JavaScript代碼相似的Selenium Core。該核心可以訪問(wèn)到被隱藏或禁用的元素。因此,即使我們使用Selenium RC在UI上禁用了某些文本框,用戶(hù)仍然可以進(jìn)行輸入。

API上的差異

  • Selenium RC的API命令較為復(fù)雜。例如,click、mouseDown、以及mouseDownAt三者很容易被引起混淆;而type與typeKeys也是如此。此外,不同的瀏覽器對(duì)這些命令的解釋也不盡相同。因此,在正確的位置選擇正確的命令,對(duì)于用戶(hù)來(lái)說(shuō)成為了一項(xiàng)艱巨的任務(wù)。
  • Selenium WebDriver的API則非常簡(jiǎn)單易用。

對(duì)瀏覽器支持的差異

  • Selenium WebDriver支持headless的HTMLUnit瀏覽器。此處的headless表示沒(méi)有UI顯示,各種命令會(huì)通過(guò)不可見(jiàn)的瀏覽器來(lái)執(zhí)行。
  • Selenium RC并不支持headless瀏覽器。

Selenium WebDriver的架構(gòu)

如上圖所示,Selenium WebDriver包含四個(gè)主要組件:

Selenium客戶(hù)庫(kù)/Selenium語(yǔ)言綁定

為了支持多種語(yǔ)言,Selenium開(kāi)發(fā)人員已經(jīng)構(gòu)建了各種語(yǔ)言綁定。也就是說(shuō),如果您正在用Java來(lái)編寫(xiě)測(cè)試,那么就可以使用Java綁定。而且,這些客戶(hù)端的庫(kù),完全可以從Selenium官方網(wǎng)站處進(jìn)行下載。

JSON傳輸協(xié)議(Wire Protocol)

JSON是JavaScript Object Notation的縮寫(xiě)形式。它能夠在客戶(hù)端和服務(wù)器之間傳輸數(shù)據(jù)。由于JSON能夠?yàn)閷?duì)象和數(shù)組之類(lèi)的數(shù)據(jù)結(jié)構(gòu)提供支持,因此方便了數(shù)據(jù)的讀取和寫(xiě)入。它往往充當(dāng)REST API,實(shí)現(xiàn)HTTP服務(wù)器之間的信息傳輸。

瀏覽器驅(qū)動(dòng)

為了與瀏覽器建立安全的連接,Selenium會(huì)用到驅(qū)動(dòng)程序。每一種瀏覽器都會(huì)使用自己的驅(qū)動(dòng)程序,來(lái)隱藏內(nèi)部功能的邏輯。此外,每一種自動(dòng)化語(yǔ)言也都有其對(duì)應(yīng)的瀏覽器驅(qū)動(dòng)。因此,各種腳本在被執(zhí)行時(shí),通常:

  • 每個(gè)Selenium命令都會(huì)生成一個(gè)相應(yīng)的HTTP請(qǐng)求,該請(qǐng)求將會(huì)被發(fā)送到瀏覽器驅(qū)動(dòng)程序處。
  • 該請(qǐng)求會(huì)通過(guò)HTTP服務(wù)器進(jìn)行路由。
  • HTTP服務(wù)器在瀏覽器上,驅(qū)動(dòng)指令的執(zhí)行。
  • 瀏覽器將狀態(tài)發(fā)送回給HTTP服務(wù)器,并將其轉(zhuǎn)發(fā)給自動(dòng)化腳本。

上文提到的瀏覽器驅(qū)動(dòng)程序包括:ChromeDriver、GeckoDriver、以及IEDriver等。它們大多可以從GitHub存儲(chǔ)庫(kù)中被下載到。

瀏覽器

瀏覽器是我們執(zhí)行測(cè)試的終點(diǎn)。Selenium能夠支持諸如:Firefox、Chrome、Internet Explorer、以及Safari等主流瀏覽器。

Selenium WebDriver的下載、安裝和設(shè)置

下面,我們來(lái)看看如何使用Windows操作系統(tǒng),將Java作為編程語(yǔ)言,以Eclipse作為IDE,完成Selenium WebDriver的下載、安裝和設(shè)置。

安裝Java

步驟1:從Java官網(wǎng)--https://www.oracle.com/java/technologies/javase-jdk14-downloads.html查找并下載Windows 64位的JDK安裝程序。

步驟2:在彈出的窗口中接受許可協(xié)議,并單擊“下載”。

步驟3:完成后,請(qǐng)到下載文件夾中雙擊可執(zhí)行文件,以安裝Java。

設(shè)置環(huán)境變量

步驟1:打開(kāi)電腦的設(shè)置,從“系統(tǒng)”對(duì)話框窗口中選擇“高級(jí)系統(tǒng)設(shè)置”。

步驟2:在彈出的窗口中單擊“環(huán)境變量”按鈕。

步驟3:在“系統(tǒng)變量”處雙擊“路徑”。

步驟4:根據(jù)系統(tǒng)對(duì)應(yīng)的位置,添加Java安裝目錄的完整路徑,并單擊OK。

步驟5:驗(yàn)證是否已安裝Java和正確地設(shè)置了變量。請(qǐng)打開(kāi)“命令提示符”并鍵入:java -version。您將可以看到在系統(tǒng)中新安裝的Java版本。

安裝Eclipse

步驟1:從Eclipse官網(wǎng)--https://www.eclipse.org/downloads/packages/查找并下載適合Java開(kāi)發(fā)人員專(zhuān)用的Eclipse IDE(最好是最新的穩(wěn)定版)。

步驟2:下載完成后,請(qǐng)其解壓縮到適當(dāng)?shù)奈恢谩?/p>

步驟3:在生成的文件夾中雙擊eclipse.exe。

下載Selenium WebDriver并設(shè)置

步驟1:訪問(wèn)Selenium官網(wǎng)--https://www.selenium.dev/downloads/

步驟2:針對(duì)列表中的Selenium Client和WebDriver Language Bindings,請(qǐng)下載與自己語(yǔ)言首選項(xiàng)相對(duì)應(yīng)的客戶(hù)端庫(kù)。本文以Java客戶(hù)端為例。

步驟3:將下載的文件解壓縮到某個(gè)目標(biāo)文件夾中,以便后續(xù)使用。

 

步驟4:找到對(duì)應(yīng)的目標(biāo)文件夾。

步驟5:打開(kāi)文件夾后,您將能夠看到一些jar文件,一個(gè)libs文件夾(其中包含了更多的jar文件)和一個(gè)Changelog文件。

步驟6:為瀏覽器下載驅(qū)動(dòng)程序。下面是三大主流瀏覽器驅(qū)動(dòng)的下載鏈接:

  • GeckoDriver(Firefox)-- https://github.com/mozilla/geckodriver/releases
  • InternetExplorerDriver-- https://selenium-release.storage.googleapis.com/index.html
  • ChromeDriver-- https://sites.google.com/a/chromium.org/chromedriver/

您也可以通過(guò)參考Selenium網(wǎng)站上的“瀏覽器”部分,以下載更多瀏覽器驅(qū)動(dòng)。

步驟7:解壓已下載的驅(qū)動(dòng),將其存放在到方便的位置。

為Selenium WebDriver配置Eclipse

步驟1:?jiǎn)?dòng)eclipse.exe。

步驟2:手動(dòng)選擇工作區(qū),或保持默認(rèn)位置,然后單擊“確定”。

步驟3:根據(jù)向?qū)В来吸c(diǎn)擊“文件”->“新建”->“Java項(xiàng)目”,以創(chuàng)建一個(gè)新的項(xiàng)目。

 

步驟4:點(diǎn)擊“下一步”,為項(xiàng)目命名,并單擊完成。

步驟5:在新建的項(xiàng)目上右鍵,選擇“新建”->“包”。

步驟6:在“新建Java包”對(duì)話框中輸入包的名稱(chēng),然后單擊“完成”。

步驟7:右擊新建包的名稱(chēng),依次選擇“新建”->“類(lèi)”。

步驟8:在“新建Java類(lèi)”對(duì)話框中,輸入類(lèi)的名稱(chēng),在方法根(method stub)處,勾選“public static void main(String [] args)”,然后單擊“完成”。

您的資源管理器看上去會(huì)與下圖類(lèi)似:

步驟9:在當(dāng)前項(xiàng)目上右擊,依次選擇“構(gòu)建路徑”->“配置構(gòu)建路徑”。

第10步:?jiǎn)螕?ldquo;添加外部JAR”,然后定位到已下載保存的JAR文件。

步驟11:依次選擇Selenium Client文件夾中的兩個(gè)jar,以及l(fā)ibs文件夾里的jar文件。

步驟12:添加完畢后,您將在Libraries下看到所有的jar文件:

步驟13:依次點(diǎn)擊“應(yīng)用”->“OK”。此時(shí),您將在“包管理器”下看到所有的“引用庫(kù)”。

至此,我們已成功地在Eclipse Project中配置了Selenium WebDriver。

使用Selenium WebDriver執(zhí)行第一個(gè)測(cè)試腳本

我們將編寫(xiě)一個(gè)簡(jiǎn)單的測(cè)試程序,該程序?qū)?dòng)Firefox瀏覽器,并打開(kāi)“www.google.com”,在將瀏覽器最大化窗口后,最后退出會(huì)話。我們?cè)诖a中將寫(xiě)入前文在配置Selenium時(shí)創(chuàng)建的測(cè)試類(lèi)。具體代碼段如下:

Java 

  1. package firstPackage; 
  2.  
  3. import org.openqa.selenium.WebDriver; 
  4.  
  5. import org.openqa.selenium.firefox.FirefoxDriver; 
  6.  
  7. public class MyFirstTestClass { 
  8.  
  9.   
  10.  
  11.     public static void main(String[] args) throws InterruptedException { 
  12.  
  13.   
  14.  
  15. System.setProperty("webdriver.gecko.driver","E:\\Softwares\\geckodriver.exe”);           
  16.  
  17. WebDriver driver = new FirefoxDriver(); 
  18.  
  19.             driver.get("https://www.google.com/"); 
  20.  
  21.             driver.manage().window().maximize(); 
  22.  
  23.             Thread.sleep(5000); 
  24.  
  25.             driver.quit(); 
  26.  
  27.     } 
  28.  

 代碼說(shuō)明:

  1. System.setProperty(“webdriver.gecko.driver”,”E:\\Softwares\\geckodriver.exe”) 

這行代碼用于設(shè)置瀏覽器的屬性,即:將系統(tǒng)的屬性設(shè)置為給定值。WebDriver代碼將引用存儲(chǔ)在第二個(gè)參數(shù)中所在路徑里的驅(qū)動(dòng),并實(shí)例化Firefox驅(qū)動(dòng)。注意,您需要提供的是存儲(chǔ)驅(qū)動(dòng)程序的系統(tǒng)路徑。

  1. WebDriver driver = new FirefoxDriver() 

我們通過(guò)引用WebDriver接口,來(lái)創(chuàng)建Firefox類(lèi)的對(duì)象(Object)。也就是說(shuō),我們可以在Firefox實(shí)例中實(shí)現(xiàn)WebDriver的方法。

  1. driver.get(“https://www.google.com/”) 

WebDriver的get()方法可以被用于打開(kāi)URL,并等待頁(yè)面的完全加載。

  1. driver.manage().window().maximize() 

maximum()方法可實(shí)現(xiàn)瀏覽器窗口的最大化。

  1. Thread.sleep(5000) 

為了使實(shí)例在網(wǎng)絡(luò)連接速度過(guò)慢的情況下不會(huì)超時(shí),我們可以通過(guò)休眠,使線程的執(zhí)行暫停指定的毫秒數(shù)(括號(hào)中的數(shù)值)。 

  1. driver.quit() 

quit()方法用于終止WebDriver會(huì)話,并關(guān)閉由WebDriver所啟動(dòng)的瀏覽器窗口。

在執(zhí)行了上述代碼后,您將會(huì)在Eclipse Console窗口中看到如下執(zhí)行日志。而在執(zhí)行測(cè)試時(shí),您也會(huì)觀察到瀏覽器窗口隨著Google的啟動(dòng),并在隨后自行關(guān)閉。

至此,您已經(jīng)成功地執(zhí)行了第一個(gè)Selenium WebDriver測(cè)試腳本。當(dāng)然,您也可以試著使用其他瀏覽器驅(qū)動(dòng)來(lái)編寫(xiě)不同的測(cè)試腳本。

Selenium WebDriver的局限性

如前所述,Selenium WebDriver在取代RC方面有著諸多優(yōu)勢(shì)。不過(guò)客觀地說(shuō),它也存在著如下局限性:

i. Selenium WebDriver不支持基于Windows的應(yīng)用程序自動(dòng)化。

ii. Selenium WebDriver無(wú)法自動(dòng)執(zhí)行圖像測(cè)試、提供驗(yàn)證碼或OTP功能。

iii. Selenium WebDriver沒(méi)有任何內(nèi)置的報(bào)告。

iv. 由于它是開(kāi)源的,因此您必須依靠社區(qū)論壇,來(lái)解決各種技術(shù)問(wèn)題。

v. 在使用Selenium WebDriver自動(dòng)化之前,您需要至少具有一門(mén)編程語(yǔ)言的基礎(chǔ)知識(shí)。

vi. Selenium中沒(méi)有用于“測(cè)試管理”的測(cè)試集成工具。

vii. Selenium WebDriver不支持并行測(cè)試。這對(duì)于大型且復(fù)雜的測(cè)試套件而言,是一種嚴(yán)重的不足。

值得一提的是,如果你的確希望用Selenium來(lái)執(zhí)行并行測(cè)試的話,請(qǐng)?jiān)囉肧elenium的另一個(gè)組件--Selenium Grid。它通過(guò)從集線器服務(wù)器,向遠(yuǎn)程Web瀏覽器實(shí)例發(fā)送命令,來(lái)實(shí)現(xiàn)并行測(cè)試。因此,在實(shí)際進(jìn)行自動(dòng)化測(cè)試時(shí),我們可以用它來(lái)實(shí)現(xiàn)在多種瀏覽器、操作系統(tǒng)、以及設(shè)備上測(cè)試自動(dòng)化腳本。

原標(biāo)題:Most Practical Selenium WebDriver Tutorial With Examples ,作者:Ritesh Shetty

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:龐桂玉 來(lái)源: 51CTO
相關(guān)推薦

2020-11-10 09:00:00

JavaMule ESB開(kāi)發(fā)

2009-10-21 10:47:03

Siliverligh

2010-07-07 10:24:46

Python多線程

2010-08-18 09:15:45

路由器網(wǎng)絡(luò)診斷

2011-02-15 09:43:33

虛擬機(jī)

2010-09-14 09:24:27

家庭無(wú)線網(wǎng)絡(luò)

2010-09-02 10:50:17

時(shí)間同步服務(wù)器

2010-08-26 09:24:59

路由器網(wǎng)絡(luò)診斷

2020-02-21 10:45:06

運(yùn)維架構(gòu)技術(shù)

2010-04-02 16:51:09

虛擬機(jī)安裝linux

2009-11-06 10:44:31

Visual Stud

2022-09-14 17:12:15

flowable源碼DEMO

2009-12-02 10:16:55

備份Cisco路由器配

2010-03-10 11:16:31

服務(wù)器DIY

2021-12-02 11:39:28

Git服務(wù)器Linux

2022-03-14 14:47:21

HarmonyOS操作系統(tǒng)鴻蒙

2021-07-14 09:00:00

JavaFX開(kāi)發(fā)應(yīng)用

2025-05-07 00:31:30

2023-03-27 00:06:12

2011-03-25 12:45:49

Oracle SOA
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成人福利在线视频 | 国产精品久久久久久一区二区三区 | 日韩中出 | 欧美精品1区2区3区 免费黄篇 | 久久天堂网 | 一区二区三区欧美 | 99re国产视频 | 成人免费观看男女羞羞视频 | 欧美成人一区二免费视频软件 | 逼逼网| 精品视频在线观看 | 日韩中文字幕免费在线 | 精品久久久久久久久久久久久 | 成人精品鲁一区一区二区 | 久草中文网 | 99re热这里只有精品视频 | 亚洲视频在线免费观看 | 欧美一区二区在线 | 少妇性l交大片免费一 | 国产精品久久久久久福利一牛影视 | 欧美一区二区免费 | 日韩欧美在线免费观看视频 | 狠狠狠色丁香婷婷综合久久五月 | 国产男女精品 | 日本亚洲一区二区 | 在线日韩 | 欧美一区二区三区视频在线 | 国产精品美女久久久久aⅴ国产馆 | 91久久夜色精品国产网站 | 久久久久一区二区三区 | 久久久久免费精品国产小说色大师 | 国产精品美女久久久久久免费 | 激情五月综合网 | 91国内精品久久 | 青青草亚洲 | 亚洲在线一区二区 | 好婷婷网 | 久久久久久国产精品久久 | 日日夜夜91 | 99久久精品国产一区二区三区 | 精品国产乱码久久久久久1区2区 |