安装 RobotFramework
RF 是基于 python 的,所以一定要安装 python 环境。它是一个通用的验收测试和验收测试驱动开发的自动化测试框架,首先安装 python,然后通过pip install robotframework==2.8.5
安装 robotframework,(后面的内容只针对 python2 环境)然后安装 wxPython(wxPython 是 Python 非常有名的一个 GUI 库,因为 RIDE 是基于这个库开发的,所以这个必须安装。)pip install -U wxPython
,最后安装 RIDE(RIDE 是 Robot Framework 的官方编辑器。)pip install robotframework-ride
,然后切换到 python2.7 的 Scripts 目录,运行 ride.py 文件(我自己的目录在 anaconda 的 Scripts 目录下)。
我自己还是使用的 VSCode,在其中装上插件就行。
创建测试用例
robotframework 文件的后缀名为 robot,如下 helloWorld 项目,运行测试用例使用 pybot 命令。
*** Test Cases ***
test case1
log hello robot framework
# 运行一条测试用例,test_case 是指定的测试用例
pybot --test test_case test_suit.robot
#运行指定测试文件
pybot test_suit.robot
# 运行以 .robot 为后缀结尾的所有文件
pybot *.robot
# 运行 test_a 目录下的所有用例
pybot test_a
运行上面的命令后,robotFramework 会自动帮我们生成测试报告,当用例运行结束后,会在文件夹输出三个文件:output.xml、log.html 和 report.html。
output.xml 记录的测试结果是 XML 文件。根据特定的需要可以编写脚本读取 XML 文件并生成特定的测试报告。
log.html 会记录 Robot Framework 运行的每一步操作,主要用于编写测试脚本的过程中查看。
report.html 为测试报告,整理性的展示测试用例的运行情况。
Robot 中的基础关键字
# log 就是编程语言中的 print
*** Test Cases ***
test case1
log robot framework
log python
# 使用 Set variable 来定义变量
*** Test Cases ***
test case2
${a} Set variable python
log ${a}
# 使用 Catenate 关键字连接多个对象
*** Test Cases ***
test case3
${hi} Catenate hello world
log ${hi}
# 加上 “SEPARATOR=” 可以对多个连接的信息进行分割。
# 打印出来的信息为:hello---world
*** Test Cases ***
test case4
${hi} Catenate SEPARATOR=--- hello world
log ${hi}
# 通过 @{} 定义列表的话,可以使用 log many 关键字进行打印
*** Test Cases ***
test case5
@{abc} Create List a b c
log many @{abc}
# 获取当前时间使用 get time
*** Test Cases ***
test case6
${t} get time
log ${t}
# sleep 设置休眠一段时间
*** Test Cases ***
test case7
${t} get time
sleep 5
${t} get time
# 通过 “run keyword if” 关键字可以编写 if 分支语句
# 注意 sele if 和 else 前面的三个点点点(…)
*** Test Cases ***
test case8
${a} Set variable 59
run keyword if ${a}>=90 log 优秀
... ELSE IF ${a}<=70 log 良好
... ELSE IF ${a}<=60 log 及格
... ELSE log 不及格
# for 循环关键字为 :FOR
*** Test Cases ***
test case9
:FOR ${i} IN RANGE 10
\ log ${i}
# 遍历列表
test case10
@{abc} create list a b c
: FOR ${i} IN @{abc}
\ log ${i}
Evaluate 关键字调用 python
# 可以使用 Evaluate 来调用 python 中的模块
*** Test Cases ***
test case11
${d} Evaluate random.randint(1000, 9999) random
log ${d}
除此之外,你还可以自己定义 python 程序,然后在 robot 中调用它。
def add(a,b):
return a + b
if __name__ == "__main__":
a = add(4,5)
print(a)
上面的 python 定义了两个数相加的函数,然后我们就可以通过 robot 来调用上面的函数。
*** Test Cases ***
test case12
Import Library D:/rf_test/count.py
# 在 Robot Framework 中所有的内容都是字符串类型
# 所以需要通过 “Evaluate” 将 4 和 5 转化为 int 类型后,再调用 add
${a} Evaluate int(4)
${b} Evaluate int(5)
${add} add ${a} ${b}
log ${add}
# 最后一点就是注释,可以用 # 或者 Comment
Comment 这个也是注释
Selenium Web 测试
首先需要安装对应的库pip install --pre --upgrade robotframework-seleniumlibrary
,然后下载 chromedriver,下载地址为:https://npm.taobao.org/mirrors/chromedriver
,可以将 chromedriver 直接放到项目文件夹下面,下面是一个使用 SeleniumLibrary 编写的测试样例。
*** Settings ***
Library SeleniumLibrary
*** Test Cases ***
Baidu search case
Open Browser http://www.baidu.com chrome
Input text id=kw robot framework
click button id=su
close Browser
SeleniumLibrary 常用定位元素的方法有如下方式:
Strategy | Match based on | Example |
---|---|---|
id | Element id. | id:example |
name | name attribute. | name:example |
identifier | Either id or name. | identifier:example |
class | Element class. | class:example |
tag | Tag name. | tag:div |
xpath | XPath expression. | xpath://div[@id=“example”] |
css | CSS selector. | css:div#example |
dom | DOM expression. | dom:document.images[5] |
link | Exact text a link has. | link:The example |
partial | link Partial link text. | partial link:he ex |
sizzle | Sizzle selector provided by jQuery. | sizzle:div.example |
jquery | Same as the above. | jquery:div.example |
default | Keyword specific default behavior. | default:example |