【RobotFramework】自动化框架的环境搭建和使用

RobotFramework概念

什么是RobotFramework?基于Python的关键字驱动的自动化框架
基于Python:就是由python语言开发的这个框架。
关键字驱动:关键字驱动测试又称为表格驱动测试,是自动化测试的一种方法,是数据测试的一种改进方法。关键字驱动主要包括测试步骤、测试步骤中的对象,测试对象执行的动作,测试对象需要的数据
自动化框架:是应用于自动化测试,框架提供可重用的基础自动化测试平台,提供自动化测试执行和管理功能的组织架构。

RF安装

前置环境
RF安装前置条件:学会使用pip
记得修改一下pip的下载源配置

   pip list 查看版本
   pip config set global.index-url https://pypi.douban.com/simple/
   pip config set install.trusted-host pypi.douban.com

pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。以下在win10_x64 cmd中操作:

  • 安装:pip install 包名
  • 安装指定版本:pip install 包名==版本号
  • 升级指定包:pip install --upgrade 包名
  • 卸载:pip uninstall 包名
  • 查看当前电脑上已经安装的包:pip list
  • 查看当前电脑上可以升级的包:pip list -o
  • 导出安装的库到指定文件(备份环境) pip freeze > requirements.txt
  • 导入指定文件中列出的库到系统(还原环境) pip install -r requirements.txt

RF做UI自动化的环境安装流程

  • 安装RF自动化框架:pip install robotframework
  • 安装RF自动化框架IDE:pip install robotframework-ride
  • 安装wxpython(rf-ride依赖wxpython):pip install wxpython,但实际上这里pip会自动帮我们下载好相应库所需要的依赖,所以在你第二步安装ride的时候wxpython就已经安装好了,但是!!!踩坑警告:pip自动帮我们下载的wxpython版本有时候会不准确,。最终可以成功运行的配置如下:Win10
    x64 + Python 3.7.7 + rf 3.1.2 + ride 1.7.4.12 + wxpython 4.0.7.post2
  • 接下来安装一些关键字库,rf只给我们提供了一个框架,里面具体的一些功能需要一些其它的库,这里我们做ui自动化就要用到Selenium2Library: pip install robotframework-selenium2library。
  • 安装完robotframework-selenium2library库之后,使用pip把robotframework-seleniumlibrary这个库的版本降级到4.3.0
  • rf可以运行了,web操作相关的库也下载了,但是!!!记得下载对应的浏览器驱动,selenium库也是通过指定浏览器的驱动去操作浏览器的,像谷歌浏览器的话百度chromedriver吧,驱动下载完放到python安装目录下Scripts下。

操作数据库相关的库:DatabaseLibrary : pip install robotframework-databaselibrary
python操作数据库的驱动模块:PyMySQL : pip install pymysql

rf日志中文乱码解决方法:
修改文件 python安装目录下 
\Lib\site-packages\robotide\contrib\testrunner\testrunnerplugin.py 第 565 行,
将 **SYSTEM** 改成 **OUTPUT**,重启ride工具。

常用关键字

Selenium2Library
Open Browser 打开浏览器
Close Browser 关闭浏览器
Close All Browsers 关闭所有浏览器
Switch Browser 选择浏览器
Switch Window 选择窗口
Close Window 关闭窗口
Select Frame 进入Frame
Unselect Frame 退出Frame
Maximize Browser Window 最大化浏览器窗口
Reload Page 重载(刷新)页面
Go Back 返回
Go To 在当前窗口打开一个链接
Input Text 输入文本
Input Password 输入密码
Choose File 选择文件上传
Click Button 点击按钮
Click Link 点击链接
Click Element 点击元素
Click Element At Coordinates 根据坐标点击元素
Click Image 点击图片
Drag And Drop By Offset 将元素以本身为零点拖动到指定坐标
Double Click Element 双击元素
Open Context Menu 右击元素
Assign Id To Element 给某个元素分配一个id
Evaluate 执行Python代码
Execute Javascript 执行JS代码
Get WebElement 获取页面元素
Get WebElements 获取多个页面元素
Get Element Attribute 获取元素属性值
Get Element Size 获取元素大小(宽高)
Get Text 获取元素文本内容
Get Title 获取当前窗口标题
Get Value 获取元素value值
Get Window Handles 获取所有窗口句柄
Handle Alert 处理Alert弹框
Input Text Into Alert 往Alert弹框中输入内容
Mouse Over 鼠标悬浮
Page Should Contain 断言页面存在文本
Page Should Contain Element 断言页面存在元素
Press Keys 按下键盘
Select From List By Index 根据索引选取下拉列表
Select From List By Label 根据文本选取下拉列表
Select From List By Value 根据value值选取下拉列表
Select Radio Button 选择单选框
Select Checkbox 选择复选框
Set Browser Implicit Wait 设置当前浏览器隐式等待
Set Selenium Implicit Wait 设置当前脚本隐式等待
Set Screenshot Directory 设置截图文件夹
Wait Until Element Contains 等待元素存在文本
Wait Until Element Is Enabled 等待元素可操作
Wait Until Element Is Visible 等待元素可见
Wait Until Page Contains 等待页面存在文本
Wait Until Page Contains Element 等待页面存在元素
Capture Page Screenshot 当前页面截图
Capture Element Screenshot 指定元素截图
BuildIn
Sleep 休眠(暂停)
Set Variable 设置变量
Create List 创建列表
Create Dictionary 创建字典
Get Time 获取当前时间
Get Length 获取字符串长度或可迭代对象元素个数
Length Should Be 断言长度
Log 打印
Log Many 打印多个内容或可迭代对象中元素
Run Keyword And Ignore Error 执行关键字并忽略错误
Run Keyword And Return Status 执行关键字并返回状态
Run Keyword If (bool) 条件表达式为True时执行关键字
FOR ${i} IN RANGE 100 … END
Continue For Loop If 条件表达式为True时跳过此次循环
Exit For Loop If 条件表达式为True时结束循环
Should Be Equal 断言==
Should Be Empty 断言为空
Should Be True 断言为True
Should Contain 断言是否是成员

元素定位

id:以百度搜索输入框为例

<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">

在RF中写法:id=kw
name:以百度搜索输入框为例

<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">

在RF中写法:name=wd
xpath:Xml Path Language
xpath路径中…表示上级,和linux类似
绝对路径:从html根部逐级(从上至下)查找
相对路径:根据节点的上下文进行查找
css选择器:好啦这里自己回过头去看html+css篇吧~
匹配元素具有指定属性//input[@maxlength]
匹配元素具有指定属性和值//input[@maxlength=‘255’]
匹配元素文本内容//a[text()=‘设为首页’]
模糊匹配元素文本内容//a[contains(text(), ‘设为’)]
元素定位小技巧:
在Chrome-F12-Console中根据Xpath寻找元素:使用$x(“”),引号中填写xpath路径,如

`$x("/html/body/div[1]/div[1]/div[3]/div/div/form/span[1]/input")`

在Chrome-F12-Console中根据css寻找单个元素:使用$(“”),引号中填写css选择器,如

$("span>input[id='kw'][name^='w']")

在Chrome-F12-Console中根据css寻找多个元素:使用$$(“”),引号中填写css选择器,如

$$("span>input[id='kw'][name^='w']")

自定义RF关键字

在python安装目录下Lib\site-packages中定义,包的形式,RF会自动去该目录下找
直接.py文件中写函数,在rf中导入.py文件,需要提供路径,可以相对导入

三层封装

元素层 导入Selenium2Library
流程层 导入元素层
案例层 导入流程层

注意

使用python相关的开发或自动化测试,pip工具不可或缺。
熟练运用xpath和css定位,在实际工作中,很多网页元素都没有id和name属性,我们要考虑最坏的情况。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值