一 、Robot Framework+Selenium环境搭建
官网:http://robotframework.org/
序号 | 安装包名 | 安装方法 | 下载地址 | 备注 |
1 | python | exe文件,直接双击安装 | https://www.python.org/download/releases/2.7.8/ | 安装路径不能有空格 |
2 | setuptools | 下载ez_setup.py文件,双击 | https://pypi.python.org/pypi/setuptools | Python 的套件管理 |
3 | pip | 1、cmd进入ez_setup.py文件目录 2、用setuptools安装:easy_install pip | https://pip.pypa.io/en/latest/index.html | Python 的套件管理 |
4 | robot framework | 1、pip install robotframework 2、源码:python setup.py install 3、exe文件,直接双击安装 | https://pypi.python.org/pypi/robotframework https://github.com/robotframework/robotframework | robot framework |
5 | wxPython | pip install -U wxPython | http://wxpython.org/download.php#stable | 支撑Ride的运行库 |
6 | robotframework-ride | 1、pip install robotframework-ride 2、源码:pythont setup.py install 3、exe文件,直接双击安装 | https://pypi.python.org/pypi/robotframework-ride | ride |
7 | selenium2library | 1、pip install robotframework-selenium2library 2、源码:pythont setup.py install 3、exe文件,直接双击安装 | https://pypi.python.org/pypi/robotframework-selenium2library | selenium2测试库,基于webdriver驱动 |
8 | cx_Oracle | exe文件,直接双击安装 | http://sourceforge.net/projects/cx-oracle/files/ | 连接oracle |
9 | databaselibrary | 1、pip install robotframework-databaselibrary 2、源码:pythont setup.py install | https://github.com/franz-see/Robotframework-Database-Library | DB库 |
10 | requests | pip install requests | https://pypi.python.org/pypi/requests | 支撑RF引入RequestsLibrary库 |
11 | RequestsLibrary | pip install -U robotframework-requests | https://github.com/bulkan/robotframework-requests | http request库 |
1.执行cmd命令:python点击回车键,界面如下:
2.如果提示python不是内部或外部命令时,检查是否将python添加到path环境变量,主要将以下三个添加即可
D:\Python27;D:\Python27\Scripts;D:\Python27\Lib\site-packages;
RobotFramework安装
1.完成以上步骤后,RobotFramework 的安装工作已经完成,可以通过执行命令“pip list”查看已经安装的产品。
2.安装完成后,验证是否安装成功:
执行cmd命令:ride.py点击回车键,界面如下:
2. 设置桌面快捷方式
D:\Python27\pythonw.exe -c "from robotide import main; main()"
二 、RIDE界面操作
1.创建
创建项目New Project
点击:File->New Project
注:选择directory原因是,在directory的项目下可以创建测试套件,如果是tpye为file,则只能创建测试用例,这不利于用例的管理。
创建测试套件New Suite
右键项目Test,点击New Suite
注:选择file原因是,在file的测试套件下可以创建测试用例,如果是tpye为directory,还得重新再继续建file的测试套件,才能创建测试用例,因为测试用例只能在file类型下创建。
创建测试用例New Test Case
右键测试套件,点击New Test Case
创建完成后,最终界面如下
2.RIDE界面说明
【1】测试套件工作区
1.测试套件Edit区
大体分成4个部分:
(1)加载外部文件
Library:加载测试库,主要是[PYTHON目录]\Lib\site-packages里的测试库
Resource:加载资源,主要是你工程相关的资源文件
Variables:加载变量文件,不怎么用,可暂时忽略
(2)定义内部变量
Add Scalar:定义变量。
Add List:定义列表型变量
Add Dict:定义字典型变量
(3)元数据定义
Add Metadata:定义元数据
(4)settings
一般settings是隐藏的,点击settings按钮,则会显示
Documentation:文档,每一项都有。可以给当前的对象加入文档说明
Suite Setup指的是测试套件启动的时候就执行某个关键字。(例:我在Suite Setup设置了Sleep | 5sec,表示等待5秒,要注意关键字的参数要使用 | 分隔)
Suite Teardown指的是测试套件结束的时候就执行某个关键字
Test Setup指的就是案例启动的时候执行某个关键字
Test Teardown指的就是案例结束的时候执行某个关键字
Test Template:测试模版,这是可以指定某个关键字为这个测试套件下所有TestCase的模版,这样所有的TestCase就只需要设置这个关键字的传入参数即可
Test Timeout:设置每一个测试案例的超时时间,只要超过这个时间就会失败,并停止案例运行。这是防止某些情况导致案例一直卡住不动,也不停止也不失败
Force Tags:在文件型Suite这里还可以继续给子元素增加Force Tags,但是他不能删除父元素设置的tags
Default Tags:默认标记,其实和Force Tags没啥区别的
Arguments:传入参数
Return Value:返回值
2.测试套件Text Edit区
测试套件测试用例文本信息
3.测试套件Run区
Execution Profile:选择运行方式,里面有pybot、jybot和custom script。默认pybot即可。
Start:运行案例。若该测试套件下的测试用例前无勾选,则默认执行该测试套件下所有的用例。若测试用例勾选,则执行该测试陶见下勾选的用例。
Stop:停止案例。
Report和Log: 报告和日志,要运行之后才能点击。他们的区别,报告更多是结果上的展示,日志更多是过程的记录,更多使用的还是日志。
Autosave: 自动保存,如果不勾选,在修改了案例之后如果没有保存的话,运行案例时会提示是否保存。勾选则在运行时自动保存了。
Arguments: pybot的参数(或者jybot等)。完整版的参数可以在doc命令行输入pybot.bat --help
Only Run Tests with these Tags: 只运行这些标记的测试案例。在case的setting里可以添加tag。
Skip Tests with these Tags: 跳过这些标记的测试案例。在case的setting里可以添加tag。
【2】测试用例工作区
1.测试用例Edit区
(1)settings
Documentation:文档,每一项都有。可以给当前的对象加入文档说明。
Setup指的就是案例启动的时候执行某个关键字。
Teardown指的就是案例结束的时候执行某个关键字。
Tags:标记某个测试用例。在Run区中Only Run Tests with these Tags和Skip Tests with these Tags,会通过这个标志位来识别是否运行或跳过用例。
Timeout:设置每一个测试案例的超时时间,只要超过这个时间就会失败,并停止案例运行。这是防止某些情况导致案例一直卡住不动,也不停止也不失败。
Template:测试模版,这是可以指定某个关键字为这个测试套件下所有TestCase的模版,这样所有的TestCase就只需要设置这个关键字的传入参数即可。
(2)表格区
最重要的部分,编写测试用例。
第一列一般写的是关键词,关键词的来源包括BuiltIn库,第三方导入库,自己编写的导入库。
使用技巧:
通过ctrl+alt+space可以自动带出相关关键字。以及相关用法,里边有对入参的说明。
Ctrl+鼠标悬浮(即鼠标在某个关键字上),可以直接显示关键字的相关用法。
第二三四五列,一般是入参,红色的表示必填的入参。浅灰色表示选填的入参。深灰色表示无需填写。
输入wait再同时按住ctrl+alt+space键,则可以自动带出相关关键字,以及选中关键字的用法。
对于已输入的关键字,忘了其用法,可以点击输入框再同时按住ctrl+alt+space键,即可查看该关键字的用法。
测试用例Text Edit区
测试用例Run区
三、Robot Framework库
BuiltIn内建库
首先先介绍下robotframework的库,通过点击F5快捷键,目前只有内建的库BuiltIn。
Evaluate 关键字:
如果你需要进行一些数值运算并得到结果,你就需要用到Evaluate关键字。Evaluate会把你想要计算的表达式直接传递给Python,并把Python的计算结果返回给你。这是最经常要用到的。
Should 系列关键字:
Should系列关键字是Should打头的一系列关键字。
Should Be Empty
Should Be Equal
Should Be Equal As Integers
Should Be Equal As Numbers
Should Be Equal As Strings
Should Be True
Should Contain
Should Contain X Times
Should End With
Should Match
Should Match Regexp
Should Not Be Empty
Should Not Be Equal
Should Not Be Equal As Integers
Should Not Be Equal As Numbers
Should Not Be Equal As Strings
Should Not Be True
Should Not Contain
Should Not End With
Should Not Match
Should Not Match Regexp
Should Not Start With
Should Start With
这些关键字都是用作判断时用的,每个用例都会用到,比如我们的执行结果得到了一个字符串,我们要判断这个字符串要与一个预期字符串相等,否则用例就无法通过,这时候,肯定会用上Should Be Equal As String
关键字,其它关键字我们通过关键字的名字就能顾名思义,知道它的作用。点击F5可查看某个函数的具体用法。
如Should Contain有两个入参,下方还有具体的说明。
Should Contain item1 item2 :item2要在item1里,比如说item1为hello item2为he 则通过。
Convert To系列关键字:
Convert To Binary
Convert To Boolean
Convert To Hex
Convert To Integer
Convert To Number
Convert To Octal
Convert To String
做类型转换,将某个值转换为相对应的类型。
Run keyword系列关键字:
Run Keyword If
Run Keyword If All Critical Tests Passed
Run Keyword If All Tests Passed
Run Keyword If Any Critical Tests Failed
Run Keyword If Any Tests Failed
Run Keyword If Test Failed
Run Keyword If Test Passed
Run、Keyword If Timeout Occurred
这些关键字能根据一个判断条件的真假来看是否执行关键字。一般使用这些关键字来实现高级语言中的ifelse功能。最常用的是Run Keyword If 和 Run Keyword unless 他们俩实现的效果正好相反。
Exit For Loop关键字:
用作退出循环,一般和Run Keyword If关键字联合使用,来实现条件退出。
Wait Until Keyword Succeeds关键字:
这是一个将异步调用变为同步调用的关键字。举一个例子:如果call某个WebService,并且需要得到返回结果才能做下一部操作。我们就会用到这个关键字。
日期相关的关键字GetTime。
测试暂停的Sleep等。都相当有用。
RF目前仅有2个内置关键字:FOF 和 IN,来实现循环结构。功能还是比较弱的。
了解关键字的用法,直接点击F5,在Search term中,输入关键字,按回车键,可以在下方对这个关键字的入参用法进行说明。
第三方库
只有内建的库往往还不能满足需求,还可以导入第三方库,如操作页面的Selenium2Library。第三方库,主要是[PYTHON目录]\Lib\site-packages里的库,一般安装的库会在此目录下。在测试套件下的工作区的右方,点击Library,在弹出框的name栏输入“Selenium2Library”,点击OK即可。
当工作区的Library那一行黑色显示,说明导入成功(如果显示红色说明导入不成功,可自行百度解决)。
点击F5快捷键查看,可查看多了一个Selenium2Library的库。
selenium2关键字:
1.Open Browser 打开浏览器
2.Close Browser 关闭浏览器
3.Maximize Browser Window 浏览器最大化
4.Get Window Size设置浏览器宽 高
5.Get Window Position设置浏览器位置
6.Input Text 文本输入
7.Click Button 按钮点击
8.Click Element 点击元素
9.Wait Until Element Contains 等待元素出现
需要传入元素定位,等待时间以及错误信息
10.Get Title 获取当前页面的title
11.Get Text 获取文本信息
12.Get Element Attribute 获取元素属性 Get Element Attribute id=kw@name 先定位元素然后获取@后面的属性的值
13.断言:
可以看到有判断是否为空,是否相等,是否为真,是否包含等等。
14.表单切换和退出
15.下拉框的相关关键字
有多选按钮,表,按表下标,按表的值等等。
AppiumLibrary常用关键字
1.实用函数
关键字 | 含义 | 实例 | 备注 |
Click Button | 点击按钮 | Click Button 注销 | 这里“注销”的class属性,必须是Button |
Click Element | 点击元素 | Click Element [locator] | Locator可以是resource-id,也可以是xpath;但必须是当前页面唯一存在的;一般用该关键字可以完成所有元素点击 |
Click Text | 点击文字 | Click Text 我的 | “我的”需要是当前页面唯一存在的 |
Input Text | 在指定元素中输入文本 | InputText [locator] 111111 | Locator可以是resource-id,也可以是xpath |
Swipe | 滑动屏幕 | Swipe 1000 1800 100 1800 | |
Get Text | 获取某标签内容 | ${account} Get Text [locator] | 获取内容后存储到指定变量中,从而在后续脚本中调用该内容 |
2.校验函数
关键字 | 含义 | 实例 |
Element Should Be Enabled | 检查元素是否可用/可见 | Element Should Be Enabled [locator] |
Page Should Contain Element | 检查界面包含某些元素 | Page Should Contain Element [locator] |
Page Should Contain Text | 检查界面包含某些文字信息 | Page Should Contain Text 预约挂号 |
Page Should Not Contain Element | 检查界面不包含某些元素 | Page Should Not Contain Element [locator] |
Page Should Not Contain Text | 检查界面不包含某些文字信息 | Page Should Not Contain Text 预约挂号 |
3.等待函数
关键字 | 含义 | 实例 | 备注 |
Wait Until Page Contains | 等待直到界面中包含某些文字,才进行下一步 | Wait Until Page Contains 预约挂号 | 默认等待时间为5s |
Wait Until Page Contains Element | 等待直到界面中包含某些元素,才进行下一步 | Wait Until Page Contains Element [locator] | locator可以是resource-id,也可以是xpath |
Wait Until Page Does Not Contain | 等待直到界面中不包含某些文字,才进行下一步 | Wait Until Page Does Not Contain 预约挂号 | |
Wait Until Page Does Not Contain Element | 等待直到界面中不包含某些元素,才进行下一步 | Wait Until Page Does Not Contain Element [locator] |
4.其他函数
条件判断
关键字:Run Keyword If
用法:
Run Keyword If
…ELSE IF
…ELSE
检查某关键字的返回状态
${isMessage} | Run Keyword And Return Status | Wait Until Page Contains Element | [locator] |
Run Keyword If | ${isMessage} | do something |
For循环
关键字:For
实例:
1)For循环单独使用时
2)For循环嵌套Run Keyword If语句,退出循环
自定义关键字
创建方法:测试项目-New Resource-New User Keyword
导入自己编写的库
注意,在clay.py文件中编写函数描述时,前面要加u,否则F5查看时,会乱码。