Selenium WebDriver——重要功能回顧
Selenium自動化工具已經問世十多年了,它可以自動化我們的測試需求。作為一個免費且擁有強大社群支援的工具,它擁有許多功能,使我們的自動化測試更加可靠和便捷。鑑於Selenium WebDriver日益增長的普及率,讓我們回顧一下它的一些重要功能,這些功能證明了為什麼Selenium WebDriver仍然在眾多工具中脫穎而出。
關鍵功能——Selenium WebDriver

相容多種Web瀏覽器
Selenium WebDriver支援市面上各種各樣的Web瀏覽器,例如Firefox、Chrome、Internet Explorer、Opera、Safari等等。與其他工具不同,Selenium WebDriver與網頁及其元素的互動方式就像真實使用者一樣。它利用瀏覽器的原生支援進行直接呼叫,無需藉助任何中介軟體。
最好的部分是,我們可以透過簡單的命令啟動瀏覽器。例如,要啟動Firefox、Chrome和Internet Explorer瀏覽器,可以使用以下命令:
WebDriver driver = new FirefoxDriver(); WebDriver driver = new ChromeDriver(); WebDriver driver = new InternetExplorerDriver();
還有其他驅動程式,例如AndroidDriver、HtmlUnitDriver和IPhoneDriver,可以在需要時使用。對於移動應用程式測試,AndroidDriver和IPhoneDriver分別用於測試Android和IOS應用程式。
支援多種程式語言
Selenium WebDriver讓我們可以自由選擇許多常用的程式語言,例如Java、C#、PHP、Ruby、Perl和Python。因此,我們可以根據需要選擇任何支援的程式語言,並相應地建立測試指令碼。
它還使我們能夠在需要時使用條件語句、決策語句、switch case語句、迴圈和分支語句來編寫指令碼,使我們的測試指令碼更強大,能夠處理所有情況。
簡單的命令來暫停連續步驟
在執行自動化指令碼時,經常會因為第二個條件在第一個條件執行完成之前就開始執行而導致錯誤,從而無法獲得預期的結果。
為了處理這些情況,Selenium WebDriver有兩個基本的等待函式。
隱式等待——這是我們可以在整個測試指令碼中每個連續步驟之間提供的預設等待時間。例如,如果預設時間為20秒,則系統將在移動到下一步之前等待20秒來執行第一步。
隱式等待的示例命令如下:
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
顯式等待——這是用於停止執行進度,直到滿足特定條件為止,系統將等待顯式給定的時間段以允許條件執行。
顯式等待的示例命令如下:
WebDriverWait wait = new WebDriverWait(driver, 20); wait.until(ExpectedConditions.elementToBeClickable (By.cssSelector(“#submitButton”)));
您還可以使用java.lang.Thread.sleep(milliseconds)方法在執行指令碼時的任何時候暫停測試執行特定時間。
例如:
Thread.sleep(20000); //To pause for 20 seconds
提供簡單的網頁導航方法
WebDriver中有一些有用的命令可用於網頁導航。讓我們討論這些有用的命令。
- driver.navigate().to() 方法 // 開啟特定URL。
例如:driver.navigate().to(“https://tutorialspoint.tw/ ”);
- driver.navigate().forward() 方法 // 在瀏覽器的歷史記錄中向前導航一頁
- driver.navigate().back() 方法 // 返回到瀏覽器歷史記錄中的上一頁
- driver.navigate().refresh() 方法 // 重新整理當前頁面
還有一個Get()命令可以開啟一個新的瀏覽器視窗。
例如:
driver.get(“https://tutorialspoint.tw/ “);
如上所述,driver.navigate.to()和driver.get()命令用於開啟URL或網頁的相同目的,但它們之間的唯一區別是,get()命令將等待頁面完全載入,而navigate()命令則不會關心頁面是否完全載入。
輕鬆識別和使用Web元素
Selenium WebDriver具有不同型別的定位器,可以清晰地定位網頁中的Web元素。藉助這些定位器,我們可以在自動化指令碼中準確地使用這些元素。

定位器如下:
- 名稱
- 類名
- ID
- 標籤名
- 連結文字
- 部分連結文字
- XPath
- CSS選擇器
- DOM
更好地處理動態Web元素
在我們自動化應用程式時經常遇到的一個常見問題是處理動態元素。對於靜態元素,很容易使用唯一的定位器(如名稱、ID、類名等)來識別這些元素,但是當元素的ID或XPath在每次頁面重新載入時都會發生變化時,處理它們就非常困難了。
讓我們討論一些處理動態元素的可能方法。
絕對XPath——我們經常使用絕對XPath來處理動態元素。它是從根節點開始的元素的完整路徑,使用單個正斜槓(/)。
contains()——contains()函式可以用於處理被靜態值包圍的動態元素。它能夠查詢包含部分文字的元素。
starts-with()——它查詢並匹配提供的屬性的起始文字與動態元素的屬性,因此當頁面重新載入時值發生變化時,它能夠找到該元素。
Selenium 3.0——變化及對Selenium WebDriver的影響
經過漫長的等待,Selenium 3.0終於釋出了。上一個版本Selenium 2.0是在大約5年前釋出的,從那時起,為了滿足我們的需求,發生了許多變化。

根據官方發行說明,Selenium 3.0對Selenium RC API進行了一些重大更改,因為他們刪除了原始的Selenium Core實現,並將其替換為由WebDriver支援的實現。他們還透過新增命令列引數選項更新了Json配置檔案格式;因此,Selenium Grid使用者可能需要更新他們的設定和配置。
但是對於WebDriver,沒有什麼變化。您可以簡單地更新到Selenium 3.0,而無需擔心任何程式碼或配置更改。我們目前正在使用的功能將仍然存在。對主要Web瀏覽器(如Firefox、Chrome、Internet Explorer和Safari)的WebDriver進行了一些改進,以獲得更好的測試體驗。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP