RobotFramework篇-利用seleniumLibrary 實現web自動化
目前版本中,有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 | 設定截圖儲存目錄。 |