目前版本中,有180+關鍵字。隨着版本的更新,關鍵字的個數和名字也會有所變動。
在網上沒有找到較為全面的關於這個庫的關鍵字介紹,所以此篇文章作為一個匯總,列舉常用的關鍵字。
1、SeleniumLibrary的安裝:
前提:已安裝好python環境並配置好環境變量。然后在命令行當中,運行以下命令:
pip install --upgrade robotframework-seleniumlibrary
2、SeleniumLibrary結構、和Selenium的關系
SeleniumLibrary是一個python第三方庫(存放在python安裝目錄下的Lib/site-packages/SeleniumLibrary)。它的結構如下,其中keywords目錄下存放的是關鍵字。
在源碼中,是分門別類的來存放關鍵字。包括alert彈框、表格/select/iframe等元素操作、等待、窗口等。
SeleniumLibrary的源代碼中,很多地方都直接使用了selenium的API來封裝網頁的操作,可以說是在selenium之上,封裝了更多的元素操作關鍵字,提供給robot框架的使用者。畢竟有現成的“輪子”,就沒有必要再重新造了。
比如上圖中elment.py當中的鼠標操作。在selenium當中,ActionChains類是用來專門實現鼠標操作的。
以元素雙擊操作為例,如果使用python+selenium庫來實現雙擊操作,需要以下代碼:
在SeleniumLibrary當中,關鍵字double click element 就將元素和鼠標雙擊操作封裝在一起。只要傳入元素定位即可(如下圖所示)。
3、SeleniumLibrary關鍵字分類解讀
1) 引入SeleniunLibrary庫時,初始化參數
SeleniumLibrary在robotframework當中,引入時會將SeleniumLibrary這個類初始化。
初始化的參數是對所有關鍵字生效的。
Timeout:等待超時時間。關鍵字當中有timeout參數的,都使用此處的默認值,5秒。
Implicit wait: 隱性等待時長。0.0表示沒有隱性等待。
run on failure: 關鍵字運行失敗時的動作。Capture Page Screenshot是截取頁面圖片的關鍵字。表示運行失敗時,自動截取當前網頁圖片, 即失敗時自動截圖功能。
Screenshot root directory: 截取的網頁圖片存放路徑 。None表示不指定路徑 ,默認與輸出文件同目錄。
我們在robot當中引入SeleniumLibrary時,可以修改默認參數值。比如修改默認timeout為15s
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 | |
---|---|---|
Click Element | css:div#foo h1 | |
Click Element | xpath=//div[@id="foo"]//h1 | |
Click Element | //*[contains(text(), "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 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 | 設置截圖存儲目錄。 |