[Selenium] Selenium 1

1. 工作原理


1.1 Selenium 1組件

Selenium 1是Selenium中最主要的第一代測試工具,它能支持幾乎所有的瀏覽器的測試,缺點在於受到JavaScript安全模型導致的限制,並且編程方式更像是面向過程的而非面向對象的。Selenium 1組件包括以下內容:

1) Selenium服務器: 它負責啓動或關閉瀏覽器,解釋和運行從測試程序中傳來的Selenium命令,並可以扮演HTTP的角色,截獲和驗證在瀏覽器和被測試的應用程序之間傳遞的HTTP消息。

2) 客戶端庫文件: 提供了各種編程語言和Selenium RC服務器之間的接口。


1.2 Selenium服務器

Selenium服務器用於接收測試程序傳來的Selenium命令,解釋並執行它們,然後向測試程序反饋測試的結果。RC服務器捆綁了Selenium Core並自動將其注入瀏覽器,Selenium Core是一系列JavaScript函數,用於調用瀏覽器內置的JavaScript解釋器,以解釋和執行Selenese命令。

該服務器同樣可以接收來自測試程序的使用簡單HTTP GET/POST請求的Selenese命令,這意味着可以使用任何支持HTTP請求的編程語言來編寫Selenium測試代碼。


1.3 Selenium客戶端庫文件

客戶端庫文件提供了對編程的支持,這樣就可以自己設計程序來運行Selenium命令。對於每一種支持的編程語言,都有不同的客戶端庫文件。Selenium客戶端庫文件提供了編程接口,用於在程序中運行selenium命令,對於每一種接口,都有對應的編程函數支持每一種Selenese命令。

客戶端庫文件可以生成Selenese命令,然後將其傳遞到Selenium服務器,對被測試的應用程序執行指定的動作或測試,也可以接收命令執行的結果,並將其傳遞給應用程序。因此要創建測試程序,只需通過客戶端庫文件API來編寫程序,用它來執行一系列Selenium命令。


2. 開始測試


2.1 啓動Selenium服務器 

在執行Selenium 1測試之前,必須先啓動Selenium服務器,下載地址爲:http://docs.seleniumhq.org/download/,位於Selenium Server一欄。下載完畢將得到一個jar文件,如果已經安裝了JDK,可以直接雙擊這個jar文件來啓動selenium服務器,或通過java命令來啓動,除了這種最基本的方式,還可以通過不同的參數進行啓動。


2.2 選擇瀏覽器

要開始測試,首先得創建Selenium的實例,通過DefaultSelenium的構造函數即可創建,代碼如下:

import com.thoughtworks.selenium.DefaultSelenium;
public class Main {
  public static void main(String[] args) {
    DefaultSelenium selenium = new DefaultSelenium("localhost", 4444,
				"*iexplore", "http://www.baidu.com");
    selenium.start();
  }
}

執行該命令後,屏幕打開兩個窗口,一個是Selenium 1的控制界面,另一個是被測試的Web程序界面,如下所示:

wKiom1UrthTxSGoxAAFNhjvQ28w267.jpg其中,localhost代表Selenium服務器的主機名稱或IP地址,4444代表Selenium服務器的端口,*iexplore代表加載對應的瀏覽器,也可以使用絕對路徑加載,最後包含一個起始URL,selenium會指向在該URL上的Selenium資源。


2.3 瀏覽器和頁面元素操作

1) open(url): 實現瀏覽器頁面的跳轉。

2) goBack(): 類似瀏覽器的後退功能。

3) refresh(): 此方法可以刷新整個頁面。

4) windowFocus(): 用於激活當前選中的瀏覽器窗口。

5) windowMaximize(): 用於將當前選中的瀏覽器窗口最大化。

6) close(): 用於關閉當前選中的瀏覽器窗口。

7) type(locator, value): 可以在input類型的頁面元素中輸入指定值。

8) typeKeys(locator, value): 輸入鍵盤擁有的字符,效果等同從鍵盤逐個輸入。

9) click(locator): 可以對鏈接、複選框或單選框等元素進行單擊。

10) clickAt(locator, coordString): 與click命令類似,增加單擊座標參數。

11) doubleClick(locator): 雙擊鏈接、複選框或單選框。

12) doubleClickAt(locator, coordString): 與doubleClick命令類似,增加單擊座標參數。

13) select(selectLocator, optionLocation): 選擇下拉框的指定選項,選項定位方式例如label=文本值。

14) check(locator)/UnChceck(locator): 勾選或取消勾選複選框。

15) focus(locator): 將焦點轉移到指定的元素上。


2.4 鼠標鍵盤模擬操作

1) altKeyDown(): 模擬按下Alt鍵不放,直到調用altKeyUp命令。

2) altKeyUp(): 鬆開alt鍵。

3) controlKeyDown(): 摸擬按下Ctrl鍵不放,直到調用controlKeyUp命令。

4) controlKeyUp(): 鬆開ctrl鍵。

5) shiftKeyDown(): 模擬按下Shift鍵不放,直到調用shiftKeyUp命令。

6) shiftKeyUp(): 鬆開shift鍵。

7) keyDown(locator, keySequence): 模擬按下某個鍵不放,直到調用keyUp命令。

8) keyUp(locator, keySequence): 模擬鬆開某個鍵。

9) keyPress(locator, keySequence): 模擬用戶敲擊了某個按鍵。

10) mouseDown(locator): 模擬用戶在指定元素上按下鼠標左鍵不放。

11) mouseDownAt(locator, coordString): 與mouseDown類似,增加座標參數。

12) mouseDownRight(locator): 模擬用戶在指定元素上按下鼠標右鍵不放。

13) mouseDownRightAt(locator, coordString): 與mouseDownRight類似,增加座標參數。

14) mouseUp(locator): 鬆開鼠標左鍵。

15) mouseUpAt(locator, coordString): 與mouseUp類似,增加座標參數。

16) mouseUpRight(locator): 鬆開鼠標右鍵。

17) mouseUpRightAt(locator, coordString): 與mouseUpRight類似,增加座標參數。

18) mouseOver(locator): 將鼠標移動到指定元素內。

19) mouseOut(locator): 將鼠標移動到指定元素外。


2.5 獲取頁面元素內容

1) getTitle(): 返回當前網頁的標題。

2) getLocation(): 獲取當前網頁的URL。

3) getValue(): 用於存儲input元素所存放的值,如文本框、複選框、單選框中的值。

4) isEditable(locator): 用於存儲input元素的可編輯狀態,如文本框、複選框、單選框的可編輯狀態。

5) getText(locator): 用於存儲某個元素的文本值,如鏈接、純文本等。

6) isChecked(locator): 存儲複選框或單選框的勾選情況。

7) getSelectedIndex(selectLocator): 獲取所選項在列表中的索引(從0開始)。

8) getSelectedLabel(selectLocator): 獲取指定列表中所選項的文本值。

9) getSelectedValue(selectLocator): 獲取指定列表中所選項的值。

10) getSelectOptions(selectLocator): 獲取指定列表中所有選項的文本,返回字符串數組。

11) getTable(tableCellAddress): 獲取表格中某個單元格的值,參數表達式爲“表格定位表達式.行號.列號”。

12) getAttribute(attributeLocator): 獲取指定屬性的值,參數應填寫屬性的定位表達式而非元素的定位表達式。

13) isTextPresent(pattern): 驗證指定的文本是否在頁面中出現。

14) isElementPresent(locator): 驗證指定元素是否存在於頁面中。

15) isVisible(locator): 驗證元素是否在頁面中顯示。

16) getXpathCount(locator): 獲取符合XPath表達式的元素的數量。


2.6 測試控制

1) waitForPageToLoad(timeout): 等待頁面加載完畢,open()命令已自動帶有等待載入功能。

2) setTimeOut(timeout): 用於設置默認超時時間,主要與open()或waitForXXX()等方法結合使用。

3) setSpeed(value): 設置測試的執行速度,也就是各步驟之間的時間間隔。

4) captureEntirePageScreenshot(filename, kwargs): 將當前窗口進行截圖並保存爲PNG文件。

5) captureScreenshot(filename): 截取整個屏幕的內容,不限瀏覽器。

6) highlight(locator): 暫時將指定元素的背景色改爲***,並在稍後取消該效果。


2.7 JavaScript對話框處理

1) isAlertPresent(): 驗證是否彈出過提示框,如果是返回true,否則返回false。

2) getAlert(): 獲取提示框的文本內容。

3) isConfirmationPresent(): 驗證是否彈出過確認對話框,如果是返回true,否則返回false。

4) getConfirmation(): 獲取確認框的文本內容。

5) chooseOkOnNextConfirmation(): 在下一次彈出確認對話框時選擇確定。

6) chooseCancelOnNextConfirmation(): 在下一次彈出確認對話框時選擇取消。

7) isPromptPresent(): 驗證是否彈出過輸入框。

8) getPrompt(): 獲取輸入框的文本內容。

9) answerOnNextPrompt(answer): 在下一次彈出輸入框時輸入指定的文本。


2.8 多窗口處理

1) getAllWindowIds(): 獲得所有打開窗口的ID。

2) getAllWindowNames(): 獲得所有打開窗口的名稱。

3) getAllWindowTitles(): 獲得所有打開窗口的標題。

4) waitForPopUp(windowID, timeout): 等待彈出窗口加載完畢。

5) selectPopUp(windowID)和selectWindow(windowID): 選擇指定的彈出窗口。

6) OpenWindow(url, windowID): 在指定彈出窗口中打開新的URL。


2.9 結束測試

1) close(): 關閉測試所使用的瀏覽器。

2) stop(): 中止當前對Selenium服務器的會話,並關閉Selenium控制界面。

3) shutDownSeleniumServer(): 關閉Selenium服務器。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章