• 2022软件测试技能 Robotframework + SeleniumLibrary + Jenkins web关键字驱动自动化实战教程


    系列文章目录

    提示:阅读本章之前,请先阅读目录



    前言

    Robotframework 是一个基于python语言开发的,可扩展的,以关键字驱动模式的自动化测试框架,支持Selenium,Requests,Appium,不单单只是web自动化测试,也可以做接口测试,app的测试,对于不会编程,以及编程能力弱的测试人员,是一个非常好的利器。

    什么是关键字驱动?
    关键字驱动表示把项目中一个个的业务逻辑封装成一个一个的关键字,然后调用不同的关键字组成不同的业务,比如:web自动化中,把打开浏览器封装为open browser的关键字函数,然后,我们在执行打开浏览器这个业务逻辑的时候,只需要调用open browser这个关键字,就可以实现这个业务逻辑,而不需要重新去写代码脚本来实现,这就是关键字驱动。

    什么是数据驱动?
    数据驱动就是把测试数据放到excel或者yaml文件中,然后通过编写测试用例到数据文件中,来驱动框架执行测试用例。简单来说,就是,我们先搭建好一个自动化测试框架,来读取我们的数据文件(excel,yaml),然后来识别测试用例的数据,然后进行执行,并输出结果和测试报告,从而在无需写脚本代码的情况下,通过新增测试用例或修改测试用例,就能实现新的功能的测试。


    一、安装

    1. 正常安装

    第一步,确保python版本是3.7及以上,并且配置好环境变量

    第二步,安装robotframework
    pip install robotframework==3.0.0

    第三步,安装RIDE开发工具
    pip install robotframework-ride

    如果下载比较慢,可以百度一下,换成清华源

    最后可以使用 pip list,查看有无安装成功

    2. 异常处理

    如果你不小心安装了最新版的robotframework,不是3.0.0的,就会出现,部分关键字无法识别

    那么,只需要重新安装3.0.0的版本,然后seleniumlibrary也安装3.0.0的版本即可

    pip list 查看所有已安装的关键字类库及对应版本信息
    
    pip uninstall roborframework   
    
    pip install robotframework==3.0.0  重启ride生效 
    
    pip uninstall robotframework-seleniumlibrary
    
    pip install robotframework-seleniumlibrary==3.0.0  重启ride生效
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    二、搭建web自动化测试环境

    第一步,安装selenium
    pip install selenium

    第二步,安装selenium-library
    pip install robotframework-seleniumlibrary==3.0.0

    第三步,下载浏览器驱动到python根目录
    浏览器驱动必须和浏览器版本一致,或者是相近的版本即可
    如果你是谷歌浏览器,那么就去下载谷歌浏览器的驱动,然后放到python根目录,否则,selenium是无法操控浏览器进行web自动化测试,如果你不清楚这部分内容,自行百度即可。

    三、如何打开RIDE

    第一步,如果你在安装robotframework的过程中,有自动创建了桌面快捷的话,直接打开即可

    第二步,如果发现桌面没有快捷方式,那么,就自己搞一个

    1. 找到 ride.py,路径:C:\Program Files\Python36\Scripts,如果没有找到,说明没有安装成功,重新安装一遍即可
    2. 然后发送到桌面快捷方式
    3. 快捷方式的图标,默认可能很难看,那么,我们就可以设置图标
    4. 鼠标右键快捷方式,然后属性,更改图标
    5. 路径选择:C:\Program Files\Python36\Lib\site-packages\robotide\widgets\robot.ico
    6. 然后,就可以直接使用了

    四、解决中文乱码

    编辑该文件:

    C:\Program Files\Python36\Lib\site-packages\robotide\contrib\testrunner\testrunnerplugin.py

    搜索:
    textctrl.AppendTextRaw(bytes(string, encoding[‘SYSTEM’]))
    在 565 行
    修改为
    textctrl.AppendTextRaw(bytes(string, encoding[‘OUTPUT’]))

    然后保存之后,重启RIDE即可

    五、界面讲解

    在这里插入图片描述

    1. 返回
    2. 前进
    3. 打开测试套件
    4. 打开文件夹
    5. 保存当前选中项
    6. 保存全部
    7. 搜索keyword 关键字
    8. 搜索测试用例
    9. 开始运行
    10.调试运行
    11. 停止运行 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    六、快捷技巧

    1. 查找关键字 F5

    在这里插入图片描述

    在这里插入图片描述

    2. 运行 F8

    3. 关键字补全提示 Shift + Ctrl + 空格

    在这里插入图片描述

    4. 备注 Ctrl + 3,取消备注 Ctrl + 4

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    5. 删除单行 Ctrl + D

    在这里插入图片描述

    6. 插入 Ctrl + i

    在这里插入图片描述

    7. 单行操作,鼠标右键

    在这里插入图片描述

    七、关键字

    所有的关键字,可以查看官网

    https://robotframework.org/SeleniumLibrary/SeleniumLibrary.html

    1. open browser

    打开浏览器

    在这里插入图片描述

    2. Maximize Browser Window

    设置窗口最大化

    在这里插入图片描述
    这个后面的灰色色块,表示不需要再填写参数了

    3. input text

    输入框

    在这里插入图片描述

    4. click element

    点击元素
    在这里插入图片描述

    5. Sleep

    暂停几秒

    在这里插入图片描述

    6. handle alert

    点击弹出框的确认按钮

    在这里插入图片描述

    7. Set Window Size

    设置浏览器大小
    在这里插入图片描述

    8. Select Frame

    进入frame 或者 iframe 框架
    在这里插入图片描述

    9. Unselect Frame

    返回frame框架
    在这里插入图片描述

    10. Select From List By

    Select From List By Value 根据value值选中
    Select From List By Label 根据文本选中
    Select From List By Index 根据下标选中

    在这里插入图片描述

    11. Get WebElements

    获取多个元素

    在这里插入图片描述

    12. Log

    打印内容

    在这里插入图片描述

    13. Go Back

    浏览器的返回操作

    在这里插入图片描述

    14. Go to

    访问哪个网址

    在这里插入图片描述

    15. Reload Page

    刷新页面

    在这里插入图片描述

    16. Get Text

    获得文本

    在这里插入图片描述

    17. Get Element Attribute

    获取元素属性的值

    在这里插入图片描述

    18. Clear Element Text

    清除输入框内容

    在这里插入图片描述

    19. Get Title

    获取当前网页标题

    在这里插入图片描述

    20. Get Location

    获取当前网址
    在这里插入图片描述

    21. Close Browser

    关闭浏览器

    在这里插入图片描述

    22. Catenate

    拼接,语法,必须大写,=后面写拼接的字符串,不写则表示不使用拼接字符
    在这里插入图片描述
    SEPARATOR=,最后返回,xiaofeng
    SEPARATOR=&,最后返回,xiao&feng

    23. Get Time

    获取时间,格式:2022-07-27 11:34:50

    在这里插入图片描述

    24. Set Variable

    设置变量

    在这里插入图片描述

    25. Create List

    创建列表

    在这里插入图片描述
    以 ${list1} 来接收,则是普通列表

    20220727 11:36:56.920 :  INFO : ${list1} = ['a', 'b', 'c', 'd', 'e']
    20220727 11:36:56.921 :  INFO : ['a', 'b', 'c', 'd', 'e']
    
    • 1
    • 2

    以 @{list2} 来接收,则是特殊列表,是给循环流程使用的

    20220727 11:36:56.922 :  INFO : @{list2} = [ a | b | c ]
    20220727 11:36:56.923 :  INFO : a
    20220727 11:36:56.923 :  INFO : b
    20220727 11:36:56.924 :  INFO : c
    
    • 1
    • 2
    • 3
    • 4

    26. Create Dictionary

    创建字典

    在这里插入图片描述

    20220727 11:36:56.925 :  INFO : ${dict1} = {'name': 'xiaofeng', 'age': '18'}
    20220727 11:36:56.926 :  INFO : {'name': 'xiaofeng', 'age': '18'}
    
    • 1
    • 2

    27. Get Dictionary Keys / values

    获取字典的所有key/值

    在这里插入图片描述

    20220727 11:36:56.927 :  INFO : ${dict_keys} = ['age', 'name']
    20220727 11:36:56.928 :  INFO : ${dict_values} = ['18', 'xiaofeng']
    
    • 1
    • 2

    28. Get From Dictionary

    获取字典某个参数
    在这里插入图片描述

    20220727 11:36:56.930 :  INFO : ${name_value} = xiaofeng
    
    • 1

    29. Evaluate

    调用python的方法

    在这里插入图片描述

    20220727 11:36:56.945 :  INFO : ${random_num} = 10
    20220727 11:36:56.947 :  INFO : 10
    
    • 1
    • 2

    30. Run Keyword If

    IF 判断语句

    在这里插入图片描述

    31. FOR

    for循环

    用法一
    for开头,end结尾
    中间写任何的关键字都可以

    for 当前值 in 列表数组
    在这里插入图片描述
    用法二
    @{}的列表才能用于for循环
    如果是${},for循环是无法识别的

    在这里插入图片描述

    用法三

    在这里插入图片描述

    编程中的停止循环是break,在这里是Exit For Loop

    这里,结合了,python中的range()函数,来指定循环多少次

    八、RF分层设计模式

    我们对RF进行二次封装,使用分层的设计模式,让我们的RF能够在企业落地,开展实战,如果只是单纯的线性脚本编写,那么维护起来是非常困难的,就比如,项目路径,如果你每个地方,都用到项目路径,如果,这个时候项目路径发生了变化,有100个地方用到了,是不是就要去修改100个地方?显然这是一个效率非常低的办法。

    所以,就衍生出来了,通过二次封装,让我们的RF,能够通过数据去驱动。

    1. 封装公共部分

    公共部分,我们可以封装,所有业务逻辑都会用到的一些关键字,数据等

    这是RF分层结构
    在这里插入图片描述
    我们通过 New Resource,新建资源
    在这里插入图片描述

    Resource,一定是选择txt
    在这里插入图片描述
    公共数据,定义变量
    在这里插入图片描述
    公共元素,存放一些公共的操作,比如,打开浏览器,关闭浏览器等

    在这里插入图片描述
    导入公共数据之后,我们就可以调用,通过${变量名}的方式
    在这里插入图片描述
    对于,一些关键字,需要传递一些参数进来,就可以这样设置

    在这里插入图片描述
    这样,我们封装了一些公共元素操作关键字

    2. 封装项目层

    在这里插入图片描述

    我们分为,项目层,模块层
    一个项目下面有很多个模块,一个模块下面可以有N个测试用例,然后每个模块都有独有的业务逻辑,页面元素

    我们来看看元素资源

    比如,封装输入用户名

    这里的关键字,叫输入用户名,那么,我们就可以在业务逻辑中,直接使用这个关键字

    把输入用户名这个业务步骤封装好,用户名可以单独作为一个参数传递进来

    在这里插入图片描述

    我们再看一个点击登录按钮

    在这里插入图片描述

    我们再来看看,业务层

    在这里插入图片描述
    我们把用户登录这个业务逻辑,直接封装成一个业务关键字
    在这里插入图片描述

    最后,我们来看看测试用例

    先导入业务资源
    在这里插入图片描述

    我们在测试用例,直接调用业务关键字,就可以实现测试

    在这里插入图片描述

    那么,数据驱动怎么做呢,我需要测试,不同的账号密码,那么只需要新增一行,填入不同的数据,就可以实现不同数据的测试,这个就是用数据来驱动测试

    在这里插入图片描述

    3. 运行测试,并查看测试结果

    我们开始运行

    在这里插入图片描述

    然后查看测试报告

    在这里插入图片描述

    在这里插入图片描述
    测试用例

    在这里插入图片描述
    具体执行步骤

    在这里插入图片描述

    九、命令行执行

    我们需要新建一个 pybot.bat ,用来执行命令

    在 C:\Program Files\Python36\Scripts,下面新建一个 pybot.bat,然后写入代码,保存即可

    @echo off
    python -m robot.run %*
    
    • 1
    • 2

    这样,我们就可以通过命令行调用RF了

    pybot -d 测试报告生成路径 项目路径
    
    • 1
    C:\Users\THINK>pybot -d D:\robotframework\robot-first D:\robotframework\robot-first
    
    • 1

    在这里插入图片描述
    然后,我们就可以在测试报告路径,看到生成了几个文件

    在这里插入图片描述
    log.html 运行日志
    output.xml 测试报告xml
    report.html 测试报告

    十、Robotframework+Jenkins

    1. 安装 robot framework

    在这里插入图片描述
    在这里插入图片描述

    2. 新建 job

    在这里插入图片描述

    3. 配置工作空间

    在这里插入图片描述

    4. 配置cmd执行命令

    在这里插入图片描述

    5. 配置html样式不丢失

    在这里插入图片描述

    6. 配置Robotframework插件

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    7. 运行查看测试报告

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述


    更新日志

    提示:将会持续优化更新

    20220727,安装,搭建web自动测试环境,如何打开RIDE,解决中文乱码,界面讲解,快捷技巧,关键字,RF分层设计模式,命令行执行,RObotFramework+Jenkins

  • 相关阅读:
    go语言的某些开发素质真低,完全就是缺教养。
    考研数一和数二不一样的知识章节汇总
    递归神经网络(RNN)在AI去衣技术中的深度应用
    Java锁
    鸿蒙原生应用元服务-访问控制(权限)开发校验环节
    【AI案例】(一)NPL文本情感分析
    FFplay文档解读-44-视频过滤器十九
    Gin 中的 Session(会话控制)
    WAF防范原理
    JAVA集合框架(一)-ARRAYLIST
  • 原文地址:https://blog.csdn.net/wg8ofk08/article/details/126007623