天天看點

robotframework架構 - seleniumLibrary 關鍵字解讀-全攻略

在robotframework當中,要實作web自動化,則需要使用SeleniumLibrary這個庫。

目前版本中,有180+關鍵字。随着版本的更新,關鍵字的個數和名字也會有所變動。

在網上沒有找到較為全面的關于這個庫的關鍵字介紹,是以此篇文章作為一個彙總,列舉常用的關鍵字。

1、SeleniumLibrary的安裝:

前提:已安裝好python環境并配置好環境變量。然後在指令行當中,運作以下指令:

pip install --upgrade robotframework-seleniumlibrary      
robotframework架構 - seleniumLibrary 關鍵字解讀-全攻略

2、SeleniumLibrary結構、和Selenium的關系

SeleniumLibrary是一個python第三方庫(存放在python安裝目錄下的Lib/site-packages/SeleniumLibrary)。它的結構如下,其中keywords目錄下存放的是關鍵字。

在源碼中,是分門别類的來存放關鍵字。包括alert彈框、表格/select/iframe等元素操作、等待、視窗等。

robotframework架構 - seleniumLibrary 關鍵字解讀-全攻略

SeleniumLibrary的源代碼中,很多地方都直接使用了selenium的API來封裝網頁的操作,可以說是在selenium之上,封裝了更多的元素操作關鍵字,提供給robot架構的使用者。畢竟有現成的“輪子”,就沒有必要再重新造了。

比如上圖中elment.py當中的滑鼠操作。在selenium當中,ActionChains類是用來專門實作滑鼠操作的。

以元素輕按兩下操作為例,如果使用python+selenium庫來實作輕按兩下操作,需要以下代碼:

robotframework架構 - seleniumLibrary 關鍵字解讀-全攻略

在SeleniumLibrary當中,關鍵字double click element 就将元素和滑鼠輕按兩下操作封裝在一起。隻要傳入元素定位即可(如下圖所示)。

robotframework架構 - seleniumLibrary 關鍵字解讀-全攻略

3、SeleniumLibrary關鍵字分類解讀

1) 引入SeleniunLibrary庫時,初始化參數

SeleniumLibrary在robotframework當中,引入時會将SeleniumLibrary這個類初始化。

初始化的參數是對所有關鍵字生效的。

robotframework架構 - seleniumLibrary 關鍵字解讀-全攻略

Timeout:等待逾時時間。關鍵字當中有timeout參數的,都使用此處的預設值,5秒。

Implicit wait: 隐性等待時長。0.0表示沒有隐性等待。

run on failure: 關鍵字運作失敗時的動作。Capture Page Screenshot是截取頁面圖檔的關鍵字。表示運作失敗時,自動截取目前網頁圖檔, 即失敗時自動截圖功能。

Screenshot root directory: 截取的網頁圖檔存放路徑 。None表示不指定路徑 ,預設與輸出檔案同目錄。

我們在robot當中引入SeleniumLibrary時,可以修改預設參數值。比如修改預設timeout為15s

robotframework架構 - seleniumLibrary 關鍵字解讀-全攻略

2)元素定位文法:

在web自動化當中,有8大定位方式。無論用什麼樣的語言/架構,定位方式都是通用的。

在robot架構當中,定位文法有以下2種表達方式:

1) 定位政策:定位表達式(比如 id:kw)

2) 定位政策=定位表達式(比如 id=kw)

在robot當中,除了8大定位方式以外,還額外擴充了幾種,整體的定位方式如下(摘抄自官方文檔):

定位政策 比對方式 定位示例
id 元素的id屬性

id:example

name 元素的name屬性

name:example

identifier 元素的id或者name屬性

identifier:example

class 元素的class屬性

class:example

tag 元素的标簽名稱

tag:div

xpath xpath定位表達式

xpath://div[@id="example"]

css css selector定位表達式

css:div#example

dom DOM表達式

dom:document.images[5]

link 精确比對連結元素的文本内容

link:The example

partial link 部分比對連結元素的文本内容

partial link:he ex

jquery jQuery表達式

jquery:div.example

示例:

Click Element id:foo # 點選id為foo的元素。
css:div#foo h1 # 點選 id為foo的div元素後代當中的h1元素
xpath=//div[@id="foo"]//h1 # 同上一個。
//*[contains(text(), "example")] # 點選 文本内容包含example的元素

注意:xpath定位表達式可省略字首:xpath。

3)浏覽器和視窗操作關鍵字

關鍵字名稱 關鍵字說明
open browser 打開浏覽器并通路系統位址。url:網站位址,browser:浏覽器類型。
close browser 關閉浏覽器。
maximize browser window 目前視窗最大化。
get window size 擷取目前視窗的大小
set window size 設定視窗大小。
get window handles 擷取浏覽器中,所有視窗的句柄。
switch window 切換視窗。可根據視窗的句柄、标題、名稱等切換。
get window names 擷取浏覽器,所有視窗的名稱。
get window titles 擷取所有視窗的标題。
get locations 擷取所有視窗的url。

4)元素通用操作關鍵字(包含滑鼠/鍵盤操作):

click ement 點選元素。
input text 在元素中輸入文本值。
get element attribute 擷取元素的某一個屬性值。
get element size 擷取元素的大小。
get value 擷取元素的value屬性值。
get text 擷取元素的文本内容
clear element text 清除元素的文本值。
get webelement 擷取一個元素對象。WebElment對象。
get webelements 擷取比對的所有元素對象。WebElment對象。
set focus to element 元素擷取焦點。
double click element 輕按兩下元素
scroll element into view 滾動元素到可見區域
drag and drop 将一個元素拖拽到另一個元素區域中。
mouse over 滑鼠懸浮在元素上
press keys 鍵盤按鍵操作。

5)select/frame/alert/表格等操作關鍵字:

get list items select/option元素中,擷取所有的options選項。
select from list by index select/option元素中,根據下标來選擇option選項
select from list by value select/option元素中,根據value屬性來選擇option選項
select from list by label select/option元素中,根據文本内容來選擇option選項
select frame 切換到指定的iframe當中。
unselect frame 退出iframe,切換到預設的html頁面中。
handle alert 關閉alert彈出框。
input text into alert 輸入文本到alert彈框中,并關閉alert彈出框。
choose file 在上傳檔案的輸入框中(input元素的type為file)輸入文本位址。
get table cell 擷取表格的單元格值。行号和列号起始值為1.包含表頭和表尾所對應的行。

6)元素等待關鍵字

(關鍵字中包含wait的, timeout參數預設為seleniumlibrary初始化值,預設為5秒):

wait for condition 等待條件成立:條件為js表達式,表達式的結果要為布爾值。
wait until element is visible 等待指定的元素可見
wait until element is not visible 等待指定的元素不可見
wait until element is enabled 等待指定的元素可用
wait until element contains 等待指定的元素 包含 指定的文本内容
wait until element does not contain 等待指定的元素 不包含 指定的文本内容
wait until page contains element 等待頁面 包含指定的元素
等待頁面 不包含指定的元素
wait until page contains 等待頁面 包含指定的文本内容
wait until page does not contain 等待頁面 不包含指定的文本内容

7)斷言關鍵字(關鍵字中包含should的均是):

page should contain element 頁面應當 包含指定的元素
page should not contain element 頁面應當 不包含指定的元素
locator should match x times 元素定位表達式應該比對 指定 次數
element should be visible 指定的元素 應當可見
element should not be visible 指定的元素 應當不可見
element should be enabled 指定的元素 應當可用
element should be disabled 指定的元素 應當不可用
element text should be 指定元素的文本内容 應當是 指定内容
element text should not be 指定元素的文本内容 應當不是 指定内容
element should be focused 指定的元素 應當為焦點狀态

還有很多其它斷言的關鍵字,不一一列舉。

8)截屏類關鍵字:

capture page screenshot 截取目前頁面圖檔。
capture element screenshot 截取指定元素的圖檔。
set screenshot directory 設定截圖存儲目錄。

4、robot - web自動化使用示例

robotframework架構 - seleniumLibrary 關鍵字解讀-全攻略

*******請大家尊重原創,如要轉載,請注明出處:轉載自:https://www.cnblogs.com/Simple-Small,謝謝!!*******

*******有任何疑問,歡迎加微:qd20150815 (加時請備注:部落格園-簡)*******