在robotframework當中,要實作web自動化,則需要使用SeleniumLibrary這個庫。
目前版本中,有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屬性 | |
name | 元素的name屬性 | |
identifier | 元素的id或者name屬性 | |
class | 元素的class屬性 | |
tag | 元素的标簽名稱 | |
xpath | xpath定位表達式 | |
css | css selector定位表達式 | |
dom | DOM表達式 | |
link | 精确比對連結元素的文本内容 | |
partial link | 部分比對連結元素的文本内容 | |
jquery | jQuery表達式 | |
示例:
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自動化使用示例
*******請大家尊重原創,如要轉載,請注明出處:轉載自:https://www.cnblogs.com/Simple-Small,謝謝!!*******
*******有任何疑問,歡迎加微:qd20150815 (加時請備注:部落格園-簡)*******