热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于RF框架的一些整理

目录简介和特点环境搭建类库和标准库基本使用一些基本关键字Web自动化常用关键字元素定位操作元素的关键字断言的关键字元素等待的关键字Frame切换弹出框操作

目录

简介和特点

环境搭建

类库和标准库

基本使用

一些基本关键字

Web自动化

常用关键字

元素定位

 操作元素的关键字

断言的关键字

元素等待的关键字

Frame切换

弹出框操作

切换窗口

三层架构

示例:




简介和特点


  • RobotFramework 简称RF
  • 基于python开发的,可扩展的,以及关键字驱动的自动化测试框架。目前只支持python3.7以下的版本
  • 支持数据驱动
  • 关键字驱动
  • 特点
    • 编写测试用例方便,支持robot、txt、tsv、html等格式

    • 自动生成html报告

    • 自带很多类库,支持很多扩展库

    • 可以根据业务逻辑自定义关键字

    • 支持非GUI方式运行,还可以和jenkins持续集成


环境搭建


  1. 安装python3.7

  2. 安装插件

    pip install robotframework -i Simple Index --trusted-host pypi.douban.com

    pip install robotframework-ride -i Simple Index --trusted-host pypi.douban.com   
    安装成功后会生成桌面快捷方式
  3. 检测是否安装成功: pip list

  4. 安装谷歌浏览器

  5. 下载对应版本的浏览器驱动http://chromedriver.storage.googleapis.com/index.html 放到python目录下


类库和标准库


  • 标准库 (RF自带的库,不需要额外安装)

            Buitln 测试库

            Collections 集合库

            DateTime 时间库

            Screenshot 截屏库

            存放位置:Python37\Lib\site-packages\robot\libraries

  • 扩展库(需要通过pip额外安装的库)

            web自动化测试:SeleniumLibrary 或 Selenium2Library

                    安装:pip install robotframework-seleniumlibrary

            接口自动化测试:RequestsLibrary

                    安装:pip install robotframework-requests

            app自动化测试:AppiumLibrary

                    安装:pip install robotframework-appniumlibrary
     

            存放位置:Python37\Lib\site-packages

  • 在RIDE中,按F5可查看库和关键字


基本使用


  1. 新建项目

    Type要选择Directory
  2. 添加一个目录,可以理解为项目中的一个模块

     
  3. 添加测试套件

  4. 添加测试用例
  5. 然后就可以在这里编写脚本了
  6. 运行脚本,运行前要先选择脚本(在前面的checkbox中打勾)
    方式一

    方式二


一些基本关键字

# F5可查看关键字

# Ctrl+Shift+空格  获得关键字提示


# 定义变量
${a}  Set Variable  100

# 打印信息
Log  ${a}

# 获得系统时间
${time}  Get Time

# 字符串拼接,默认以空格拼接
${str}  catenate  a  b  c
# 使用特定字符拼接(如用#拼接)
${str}  catenate  SEPARATOR=#  a  b  c

# 创建列表,得到${a} = ['a', 'b', 'c']
${list}  Create List  a  b  c
Log  ${list}    # 和python一样的列表格式

# 另一种列表
@{list}  Create List  a  b  c     # 适合做循环
# 得到@{a} = [ a | b | c ]
# 需要用Log Many打印
Log Many  @{list}
# 打印出 a  b  c  三个单独的值

# 字典关键字,得到${dict} = {'name': '张三', 'age': '24'}
${dict}  Create Dictionary  name=张三  age=24
 

# 直接执行python的方法,modules相当于导包
${rand}  Evaluate  random.randint(1,100)  modules=random
${time}  Evaluate  time.time()  modules=time

# 可以使用这种方法获取字典的值
${value}    Evaluate    ${dict}.values()

# 执行py文件的方法
Import Library  py文件路径
${x}  Evaluate  int(10)
${y}  Evaluate  int(20)
${result}  sum  ${x}  ${y}    # sum是py文件中的方法,实现加法运算
Log  ${result}

# 流程控制if
Run Keyword If  ${score}<60  Log  不及格
...  ELSE IF  ${score<80}  Log  一般
...  ELSE  Log  优秀


# for循环写法1
FOR  ${a}  IN  test  python  java
Log  ${a}
END

# for循环写法2
@{list}  Create List  test  python  java
FOR  ${a}  IN  @{list}
Log  ${a}
END

# for循环写法3
FOR  ${a}  IN  IN RANGE  1  11     # 相当于Python的 for a in range(1,11)
Log  ${a}
Run Keyword If  ${a}==6  Exit for Loop     # 退出循环
END


# 截图,需导入Screenshot
Take Screenshot



Web自动化

需要安装扩展库:
pip install robotframework-seleniumlibrary 或 pip install robotframework-selenium2library


常用关键字


# 打开浏览器
Open Browser  URL地址  chrome

# 设置隐式等待
Set Browser Implicit Wait  3

# 窗口最大化
Maximize Browser Window

# 指定浏览器的尺寸
Set Window Size  600  800

# 获得浏览器的宽度和高度
${width}  ${height}  Get Window Size

# 回退
Go Back

# 前进
Go To  url地址

# 刷新
Reload Page

# 获取标题
${title}  Get Title

# 获得地址
${location}  Get Location

# 关闭浏览器
Close Browser



元素定位

我比较喜欢用xpath和css定位,具体的定位方法以后再补充


 操作元素的关键字


Open Browser    http://www.baidu.com    chrome        #打开浏览器
Maximize Browser Window        #最大化窗口
Set Browser Implicit Wait    5        #隐式等待
Input Text    id=kw    测试    #输入文本
Clear Element Text    id=kw    #清空文本
${text1}    Get Text    xpath=//a[@href="http://news.baidu.com"]    #获取文本
${text2}    Get Element Attribute    xpath=//a[@href="http://news.baidu.com"]    text    #获取文本
${shuxing}    Get Element Attribute    xpath=//a[@href="http://news.baidu.com"]    class    #获取元素class属性
Input Text    xpath=//input[@id="kw"]    鸽子    #输入文本
Click Element    css=#su    #点击元素

#下拉框选择
Select From List By Index  定位到下拉框  下标    #通过索引选择下拉选项,索引从0开始
Select From List By Label  定位到下拉框  文本    #通过文本定位下拉选项
Select From List By Value  定位到下拉框  Value属性值        #通过Value属性值定位到下拉选项



断言的关键字


系统断言
Should Be Empty  ${a}    #判断是否为空
Should Be Equal  A  a    #判断相等,区分大小写
Should Be Equal  A  a  ignore_case=True    #判断相等,忽略大小写
Should Be True    #判断是否为True
Should Contain  ceshi  es  ignore_case=True        #是否包含
Should Start With  ceshi  ce    #是否以*开头
Should End With  ceshi  i    #是否以*结尾
Length Should Be  ceshi  5    #判断长度

selenium断言
Page Should Contain  新闻        #页面是否包含文本
Page Should Contain Element  id=kw    #页面是否包含元素



元素等待的关键字


Set Browser Implicit Wait  5    #隐式等待,针对当前浏览器
Set Selenium Implicit Wait  5    #隐式等待,针对所有浏览器
Wait Until Element Contains  link=新闻  新闻  10    #等待元素包含指定的文本
Wait Until Element Enable  link=新闻  新闻  10        #等待元素可用
Wait Until Element Visible  link=新闻  新闻  10        #等待元素可见
Wait Until Page Contains  新闻  3        #等待页面包含指定文本
Wait Until Page Contains Element  id=kw  3        #等待页面包含指定元素



Frame切换


frameset框架集,frame框架,iframe子框架
当要操作的元素在其他frame中时,需要切换到对应的frame中才能进行定位和操作。frameset不用理会

#进入框架
Select Frame  name=menu-frame
#跳出框架
Unselect Frame
#跳出框架后可以进入其他框架



弹出框操作

这段是抄来的(`・ω・´)


alert 只有一个确定按钮
confirm 有确定和取消按钮
prompt 有确定、取消还可以输入文本

1、Alert Should Be Present 
这个关键字不仅仅验证是否存在包含响应arg的弹出框,同时如果存在就执行关闭操作
2、Get Alert Message
用于获取获取警告信息,通常我们会把获取到的文本传递给一个变量,然后打印结果进行查看
3、Confirm Action关闭确认框并返回确认框信息
默认点击确定按钮,如果操作取消按钮,需要在确认框弹出之前预定于“ Choose Cancel On Next Confirm action 再用Confirm Action
4、Input Text Into Prompt文本提示框输入关键字
Input Text Into Prompt  [ text ]
用于Alert 弹出文本输入框的输入,配合Confirm Action警告框实现整个文本弹出框的操作
5、Handle Alert
Handle Alert [ action=ACCEPT | timeout=None ] 默认就是点弹出框的确定
Handle Alert  action=DISMISS  点取消



切换窗口


Select Window  new    #切换到新的窗口
Select Window  main    #切换回初始窗口

@{handles}    List Windows    #获取所有窗口句柄的列表
Select Window  @{handles}[-1]    #通过句柄选择窗口
Select Window  ${title}        #通过title选择窗口



三层架构


哪三层?
页面元素层<--业务逻辑层<--测试用例层
业务逻辑层调用页面元素层,测试用例层调用业务逻辑层

为什么要分层?
方便管理,提高可维护性



示例:

以百度的搜索功能为例,完成脚本的封装和基础的数据驱动的示例

首先创建项目,添加搜索模块和common目录(用于存放一些公共的方法和数据)

在common下添加Resource(公共元素和公共数据),选择txt格式

 在公共数据下添加参数

公共元素可以导入library和resource,并添加user keyword

 注意大小写敏感 

 

添加页面元素层

导入library和resource

 添加keyword

通过Arguments传入数据

 再添加一个点击搜索的keyword

添加业务逻辑层,步骤如上

最后添加测试用例层
先在搜索目录下添加一个测试套件

导入library和resource 

添加用例

试运行一下:

最后再改造一下测试用例,实现数据驱动

运行结果

根据不同的数据,分别运行了3次。

再看一下自动生成的报告,默认报告路径(用户名换成自己的) C:\Users\Administrator\AppData\Local\Temp\RIDEkocsbjed.d\

基本的用法就是这样了,但是实际环境肯定复杂的多,还是会有点废头发的。。。


推荐阅读
  • 本文介绍了使用C++Builder实现获取USB优盘序列号的方法,包括相关的代码和说明。通过该方法,可以获取指定盘符的USB优盘序列号,并将其存放在缓冲中。该方法可以在Windows系统中有效地获取USB优盘序列号,并且适用于C++Builder开发环境。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • 本文总结了使用不同方式生成 Dataframe 的方法,包括通过CSV文件、Excel文件、python dictionary、List of tuples和List of dictionary。同时介绍了一些注意事项,如使用绝对路径引入文件和安装xlrd包来读取Excel文件。 ... [详细]
author-avatar
$Array$
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有