在robotframework當(dāng)中往弓,要實(shí)現(xiàn)web自動(dòng)化旦装,則需要使用SeleniumLibrary這個(gè)庫(kù)访递。
目前版本中,有180+關(guān)鍵字同辣。隨著版本的更新拷姿,關(guān)鍵字的個(gè)數(shù)和名字也會(huì)有所變動(dòng)。
在網(wǎng)上沒有找到較為全面的關(guān)于這個(gè)庫(kù)的關(guān)鍵字介紹旱函,所以此篇文章作為一個(gè)匯總响巢,列舉常用的關(guān)鍵字。
1棒妨、SeleniumLibrary的安裝:
前提:已安裝好python環(huán)境并配置好環(huán)境變量踪古。然后在命令行當(dāng)中,運(yùn)行以下命令:
2券腔、SeleniumLibrary結(jié)構(gòu)伏穆、和Selenium的關(guān)系
SeleniumLibrary是一個(gè)python第三方庫(kù)(存放在python安裝目錄下的Lib/site-packages/SeleniumLibrary)。它的結(jié)構(gòu)如下纷纫,其中keywords目錄下存放的是關(guān)鍵字枕扫。
在源碼中,是分門別類的來(lái)存放關(guān)鍵字辱魁。包括alert彈框烟瞧、表格/select/iframe等元素操作诗鸭、等待、窗口等参滴。
SeleniumLibrary的源代碼中强岸,很多地方都直接使用了selenium的API來(lái)封裝網(wǎng)頁(yè)的操作,可以說(shuō)是在selenium之上砾赔,封裝了更多的元素操作關(guān)鍵字悯恍,提供給robot框架的使用者晴裹。畢竟有現(xiàn)成的“輪子”,就沒有必要再重新造了。
比如上圖中elment.py當(dāng)中的鼠標(biāo)操作前标。在selenium當(dāng)中系枪,ActionChains類是用來(lái)專門實(shí)現(xiàn)鼠標(biāo)操作的单料。
以元素雙擊操作為例固该,如果使用python+selenium庫(kù)來(lái)實(shí)現(xiàn)雙擊操作,需要以下代碼:
在SeleniumLibrary當(dāng)中脆诉,關(guān)鍵字double click element 就將元素和鼠標(biāo)雙擊操作封裝在一起甚亭。只要傳入元素定位即可(如下圖所示)。
3击胜、SeleniumLibrary關(guān)鍵字分類解讀
1)引入SeleniunLibrary庫(kù)時(shí)亏狰,初始化參數(shù)
SeleniumLibrary在robotframework當(dāng)中,引入時(shí)會(huì)將SeleniumLibrary這個(gè)類初始化偶摔。
初始化的參數(shù)是對(duì)所有關(guān)鍵字生效的暇唾。
Timeout:等待超時(shí)時(shí)間。關(guān)鍵字當(dāng)中有timeout參數(shù)的辰斋,都使用此處的默認(rèn)值策州,5秒。
Implicit wait: 隱性等待時(shí)長(zhǎng)宫仗。0.0表示沒有隱性等待够挂。
run on failure: 關(guān)鍵字運(yùn)行失敗時(shí)的動(dòng)作。Capture Page Screenshot是截取頁(yè)面圖片的關(guān)鍵字藕夫。表示運(yùn)行失敗時(shí)孽糖,自動(dòng)截取當(dāng)前網(wǎng)頁(yè)圖片, 即失敗時(shí)自動(dòng)截圖功能毅贮。
Screenshot root directory: 截取的網(wǎng)頁(yè)圖片存放路徑 办悟。None表示不指定路徑 ,默認(rèn)與輸出文件同目錄滩褥。
我們?cè)趓obot當(dāng)中引入SeleniumLibrary時(shí)病蛉,可以修改默認(rèn)參數(shù)值。比如修改默認(rèn)timeout為15s
2)元素定位語(yǔ)法:
在web自動(dòng)化當(dāng)中,有8大定位方式铡恕。無(wú)論用什么樣的語(yǔ)言/框架,定位方式都是通用的丢间。
在robot框架當(dāng)中探熔,定位語(yǔ)法有以下2種表達(dá)方式:
定位策略:定位表達(dá)式(比如 id:kw)
定位策略=定位表達(dá)式(比如 id=kw)
在robot當(dāng)中,除了8大定位方式以外烘挫,還額外擴(kuò)展了幾種诀艰,整體的定位方式如下(摘抄自官方文檔):
示例:
Click Element | id:foo | # 點(diǎn)擊id為foo的元素。 |
---|---|---|
Click Element | css:div#foo h1 | # 點(diǎn)擊 id為foo的div元素后代當(dāng)中的h1元素 |
Click Element | xpath=//div[@id="foo"]//h1 | # 同上一個(gè)饮六。 |
Click Element | //*[contains(text(), "example")] | # 點(diǎn)擊 文本內(nèi)容包含example的元素 |
注意:xpath定位表達(dá)式可省略前綴:xpath其垄。
3)瀏覽器和窗口操作關(guān)鍵字
關(guān)鍵字名稱 | 關(guān)鍵字說(shuō)明 |
---|---|
open browser | 打開瀏覽器并訪問(wèn)系統(tǒng)地址。url:網(wǎng)站地址,browser:瀏覽器類型 |
close browser | 關(guān)閉瀏覽器 |
maximize browser window | 當(dāng)前窗口最大化 |
get window size | 獲取當(dāng)前窗口的大小 |
set window size | 設(shè)置窗口大小 |
get window handles | 獲取瀏覽器中卤橄,所有窗口的句柄 |
switch window | 切換窗口绿满。可根據(jù)窗口的句柄窟扑、標(biāo)題喇颁、名稱等切換 |
get window names | 獲取瀏覽器,所有窗口的名稱 |
get window titles | 獲取所有窗口的標(biāo)題 |
get locations | 獲取所有窗口的url |
4)元素通用操作關(guān)鍵字(包含鼠標(biāo)/鍵盤操作):
關(guān)鍵字名稱 | 關(guān)鍵字說(shuō)明 |
---|---|
click ement | 點(diǎn)擊元素 |
input text | 在元素中輸入文本值 |
get element attribute | 獲取元素的某一個(gè)屬性值 |
get element size | 獲取元素的大小 |
get value | 獲取元素的value屬性值 |
get text | 獲取元素的文本內(nèi)容 |
clear element text | 清除元素的文本值 |
get webelement | 獲取一個(gè)元素對(duì)象嚎货。WebElment對(duì)象橘霎。 |
get webelements | 獲取匹配的所有元素對(duì)象。WebElment對(duì)象 |
set focus to element | 元素獲取焦點(diǎn) |
double click element | 雙擊元素 |
scroll element into view | 滾動(dòng)元素到可見區(qū)域 |
drag and drop | 將一個(gè)元素拖拽到另一個(gè)元素區(qū)域中 |
mouse over | 鼠標(biāo)懸浮在元素上 |
press keys | 鍵盤按鍵操作 |
5)select/frame/alert/表格等操作關(guān)鍵字:
關(guān)鍵字名稱 | 關(guān)鍵字說(shuō)明 |
---|---|
get list items | select/option元素中殖属,獲取所有的options選項(xiàng) |
select from list by index | select/option元素中姐叁,根據(jù)下標(biāo)來(lái)選擇option選項(xiàng) |
select from list by value | select/option元素中,根據(jù)value屬性來(lái)選擇option選項(xiàng) |
select from list by label | select/option元素中洗显,根據(jù)文本內(nèi)容來(lái)選擇option選項(xiàng) |
select frame | 切換到指定的iframe當(dāng)中 |
unselect frame | 退出iframe外潜,切換到默認(rèn)的html頁(yè)面中 |
handle alert | 關(guān)閉alert彈出框 |
input text into alert | 輸入文本到alert彈框中,并關(guān)閉alert彈出框 |
choose file | 在上傳文件的輸入框中(input元素的type為file)輸入文本地址 |
get table cell | 獲取表格的單元格值挠唆。行號(hào)和列號(hào)起始值為1.包含表頭和表尾所對(duì)應(yīng)的行 |
6)元素等待關(guān)鍵字
(關(guān)鍵字中包含wait的, timeout參數(shù)默認(rèn)為seleniumlibrary初始化值橡卤,默認(rèn)為5秒):
關(guān)鍵字名稱 | 關(guān)鍵字說(shuō)明 |
---|---|
wait for condition | 等待條件成立:條件為js表達(dá)式,表達(dá)式的結(jié)果要為布爾值损搬。 |
wait until element is visible | 等待指定的元素可見 |
wait until element is not visible | 等待指定的元素不可見 |
wait until element is enabled | 等待指定的元素可用 |
wait until element contains | 等待指定的元素 包含 指定的文本內(nèi)容 |
wait until element does not contain | 等待指定的元素 不包含 指定的文本內(nèi)容 |
wait until page contains element | 等待頁(yè)面 包含指定的元素 |
wait until page contains element | 等待頁(yè)面 不包含指定的元素 |
wait until page contains | 等待頁(yè)面 包含指定的文本內(nèi)容 |
wait until page does not contain | 等待頁(yè)面 不包含指定的文本內(nèi)容 |
7)斷言關(guān)鍵字(關(guān)鍵字中包含should的均是):
關(guān)鍵字名稱 | 關(guān)鍵字說(shuō)明 |
---|---|
page should contain element | 頁(yè)面應(yīng)當(dāng) 包含指定的元素 |
page should not contain element | 頁(yè)面應(yīng)當(dāng) 不包含指定的元素 |
locator should match x times | 元素定位表達(dá)式應(yīng)該匹配 指定 次數(shù) |
element should be visible | 指定的元素 應(yīng)當(dāng)可見 |
element should not be visible | 指定的元素 應(yīng)當(dāng)不可見 |
element should be enabled | 指定的元素 應(yīng)當(dāng)可用 |
element should be disabled | 指定的元素 應(yīng)當(dāng)不可用 |
element text should be | 指定元素的文本內(nèi)容 應(yīng)當(dāng)是 指定內(nèi)容 |
element text should not be | 指定元素的文本內(nèi)容 應(yīng)當(dāng)不是 指定內(nèi)容 |
還有很多其它斷言的關(guān)鍵字碧库,不一一列舉。
8)截屏類關(guān)鍵字:
關(guān)鍵字名稱 | 關(guān)鍵字說(shuō)明 |
---|---|
capture page screenshot | 截取當(dāng)前頁(yè)面圖片 |
capture element screenshot | 截取指定元素的圖片 |
set screenshot directory | 設(shè)置截圖存儲(chǔ)目錄 |