【robotframework】pycharm+robotframe
一、環境搭建
二、框架介紹
1.settings
- 是這個測試套件的全局配置表
- 說明這個測試套件要使用的測試庫、資源文件
- 測試套件的環境初始化(setup)和清除(teardown)
- 該套件內的標簽等
2.Variables
定義本測試套件的全局變量
3.Keywords
定義本測試套件的關鍵字(支持返回值[Return])
4.Test Cases
定義本測試套件的測試用例
*** Settings ***
Library Selenium2Library
Resource xxxx
Suite Setup xxxxx
Suite Teardown
Test Setup
Test Teardown
Default Tags
Force Tags
Test Template
*** Variables ***
${v1} 1
@{list} 1,2,3
*** Keywords ***
Open page
open browser www.baidu.com
*** Test Cases ***
case1
xxx
case2
xxx
測試用例表語法
- 測試用例表里面的每個用例大概可以分為:
- 配置部分
- 用例部分
- 用例配置部分
[Documentation]該用例的文字說明[Tags]該用例的標簽[Setup],[Teardown]該用例的初始化和清除操作[Template]聲明該用例是模板關鍵字驅動的,本用例只包含測試數據[Timeout]設置用例超時時間
三、關鍵字
1.log打印
log
log to console 打印到控制台
2.定義變量
1)${variable name} value (在***Variables***中定義)
${variable name} Set variable value (在***Test Cases***中定義)
2)定義列表
@{list name} value1 value2...... (在***Variables***中定義)
@{list name} Create List value1 value2...... (在***Test Cases***中定義)
3.獲取時間
在 Robot Framework 中也提供操作時間的關鍵字。get time
*** Test Cases ***
case5
${t} get time
log ${t}
sleep 5 #設置休眠時間
4.if語句
通過“run keyword if”關鍵字可以編寫 if 分支語句*** Test Cases ***case2
${a} Set variable 59
run keyword if ${a} > 80 log youxiu
... ELSE IF ${a} > 60 log bujige
... ELSE log bujige
注意:分支語句前加“...”
5.for循環
在 Robot Framework 中編寫循環通過“:for”
*** Test Cases ***
case3
:FOR ${i} IN RANGE 0 10 2 #分別為起始值,結束之和步長,當起始值和結束之為空時,二者默認為0和1
\ log ${i}
\ log end
\ Exit For Loop if '${i}' == '4' #跳出循環
case4
@{list} Create List a b c
:FOR ${i} IN @{list}
\ log ${i}
\ log end
注意::FOR ,其中的:用於與一般關鍵字做區分,對於循環結構體內的每一行,使用 \ 作為改行的行首關鍵字
6.Evaluate
通過它可以使用 Python 語言中所提供的方法。
*** Test Cases ***
case6
${d} Evaluate random.randint(0,100) random #變量 關鍵字 調用python方法 方法所在庫
log ${d} ${path}
7.catenate

8.collection庫
*** Settings ***
Library Collections
*** Test Cases ***
case8
${dict} Create Dictionary a 1 b 2 c 3 #創建字典
${items} Get Dictionary Items ${dict} #獲取字典中的key和value
log ${items}
${key} Get Dictionary Keys ${dict} #獲取字典中的key
log ${key}
${value} Get Dictionary Values ${dict} #獲取字典中的value
log ${value}
${v} Get From Dictionary ${dict} b #獲取字典中key所對應的value
log ${v}
9、資源文件
- 在測試套件文件中定義關鍵字的問題
- 只能在本測試套件中有效,無法共享給其他測試套件使用
- 使用資源文件
- 資源文件其實就是RF層面的庫文件
- 里面可以包含用來共享的變量和關鍵字
- 資源文件的格式基本也和測試套件文件格式類似(只是不含測試用例)
- 資源文件的引用
Resource
Resource 后可以跟絕對路徑也可以用相對路徑(相對於當前文件所在的目錄),但文件名必須要帶后綴。
如果同級目錄下沒有,就會去path路徑下尋找。
*** Settings *** Library SeleniumLibrary Resource rc.robot
10.導入擴展庫
1).導入python庫-變量
- 將變量或關鍵字封裝到python文件中
- RF***settings***中生命變量文件(以下例子,兩文件在同一路徑下)
python文件引用時可以使用絕對路徑也可以使用相對路徑,建議使用相對路徑
使用相對路徑的時候,RF搜索規則和資源文件搜索規則一樣:先搜索當前目錄下該python文件是否存在,沒有的話則根據path路徑查找


2).python模塊作為測試庫
- 將變量或關鍵字封裝到python文件中(可封裝成類或直接封裝為方法)
- RF***settings***中生命變量文件(以下例子,兩文件在同一路徑下)


注意:當文件名和類名不一樣時,如文件名為a,類名為b,方法為c(同一路徑下)
***settings***
library a.b
***test case***
${a} a.b.c
11.注釋
使用關鍵字comment或#
四、selenium2Library中的關鍵字
*** Test Cases ***
case9
Open Browser https://www.baidu.com/ Firefox #啟動瀏覽器,瀏覽器為空時,默認啟動firefox
# go to https://mail.qq.com/ #跳轉到某個網頁
# go back #返回
# Maximize Browser Window #窗口最大話
${width} ${height} Get Window size #獲取窗口大小
log ${width} ${height}
${title} get title #獲取窗口title信息
log ${title}
${attribute} get element attribute id=kw name #獲取元素屬性
log ${attribute} #添加cookie
add cookie mark dhs
${all_cookies} get cookies #獲取所有cookies
log ${all_cookies}
${cookie} get cookie BAIDUID #根據key_name獲取cookie值
log ${cookie}
${result} should contain ${title} 百度一下,你就知道 #驗證是否包含
log ${result}
# delete cookie mark #根據key_name刪除cookie值
# delete all cookies
# get text id= #獲取元素文本信息
# input text id=kw robotframework #文本輸入關鍵字 定位方式 輸入的文本
# input text name=wd robotframework
# input text Xpath = //*[@id='kw'] robotframework
input text css = #kw robotframework
wait until page contains element css = #kw 5 can't find element #關鍵字 元素 等待時長 錯誤提示 類似於selenium中的顯示等待
# click element id= #點擊元素
click button id=su #點擊按鈕
# select from list by value #下拉框選擇
# execute javascript js語句 #執行js語句
# Close Browser #關閉當前瀏覽器
# Close All Browser #關閉所有瀏覽器
case10
open browser https://mail.163.com/
sleep 2
select frame xpath= #進入表單
unselect frame #退出表單
- Should Be Equal
- Should Be ...
- Should Be True
- 字符串時 should be true'${str}'=='str'
- 數字 should be true ${value}==value
-
convert to interger 轉換為整數
-
convert to Number 轉換為浮點數
-
${33} 直接傳數字
五、各個級別的set up
suite setup/teardown:在suit套件中只執行一次
test setup/teardown:每個case執行前都會執行一次
[setup/teardown]:屬於case級別,每個case執行前都會執行一次,當同時存在test setup/teardown和[setup/teardown]時,執行[setup/teardown];

六、關鍵字驅動示例
*** Settings ***
Library Selenium2Library
Test Setup open browser ${url}
Test Teardown close browser
*** Variables ***
${url} http://xxxxx
${correct_acc} admin
${correct_pwd} admin
*** Keywords ***
login_failed
[Arguments] ${account} ${password}
# open browser ${url}
input text id=id_username ${account}
input text id=id_password ${password}
click button id=login_submit
sleep 2
${result} get text xpath=.//*[@id='content']/div
should contain ${result} Invalid Username or Password, please try again.
*** Test Cases ***
#casename username pwd
case1:pwd_error
[Documentation] passworderror
login_failed ${correct_acc} 123
case2:acc_error
login_failed 123 ${correct_pwd}
case3:pwd_acc_error
login_failed 123 123
case4:pwd_emty
login_failed ${correct_acc} ${empty}
case5:acc_emty
login_failed ${empty} ${correct_pwd}
case6:acc__pwd_emty
login_failed ${empty} ${empty}

