一文详解!Robot Framework Selenium UI自动化测试入门篇

news2025/2/22 22:33:57

目录

前言:

自动化框架的选择

测试环境的搭建

导入Selenium2Library包

关键字是什么?

创建测试用例


前言:

自动化测试的重要性越来越受到人们的重视,因为它可以提高测试效率、降低测试成本并减少人为错误的出现。为了满足这个需求,越来越多的公司开始采用自动化测试来保证软件质量。

一切的开始

某天,发生着我们每个测试工程师都可能遇到的场景:

项目经理:现在大家都在搞测试自动化,我们也用自动化的手段提高效率吧。

测试猿:好的。

测试猿:经理,我研究了下,结论是这样的:

  1. 自动化测试分为UI自动化和接口自动化。前者从UI发起,可以模拟用户在web上点击从而测试功能;后者从接口发起,能从接口层面确保接口功能。

  2. 一般来说,UI变化大,接口变动小,大部分的UI自动化都是保障基本功能,接口自动化保障服务提供能力。所以,一般不建议使用UI自动化测试各种异常场景,原因不是不能测,而是维护工作量太大。

  3. 最后,项目经理权衡各种利弊,决定使用UI先做基本功能的自动化,用来做回归测试和线上基本功能保障。

自动化框架的选择

最终选择了Robot Framework+Selenium2Library的组合,原因如下:

  1. 博主只懂入门级python语言,而RFS对编程语言的要求基本为0。

  2. RFS环境搭建好后,测试结果汇总,测试报告,测试log都是直接生成的网页版,方便进行结果分析和分发。

  3. 公司制作的网页没有使用比较难以定位的插件。

测试环境的搭建

测试环境的搭建有2个方法:

  1. (推荐方法)安装也能了解自己使用了什么工具和插件,安装链接:https://blog.csdn.net/ywyxb/article/details/64126927

完全安装好环境后,就可以在CMD窗口运行ride.py来启动ride编辑器了,启动后的主界面如下,我们先不看别的,右键点击project,创建个New Directory:

给文件夹起个名字,并且(推荐)使用默认的txt文件进行编辑:

右键选择你的文件夹,创建一个测试套件:

给测试套件起个名字,其它均使用默认值即可:

导入Selenium2Library包

点击Library,导入Selenium2Library的包,引入后套件内均可使用其关键字:

引入成功后,可以按F5来查看引入类库包含的关键字:

关键字是什么?

Q:什么是关键字?

A:关键字是RF自动化的根本,可以理解为可以直接使用的封装好的函数。

创建测试用例

右键点击我们创建好的测试套件,创建一条测试用例:

好了,前面都是准备工作,我们现在可以正式开始写自动化用例了:

Q:UI自动化用例第一步应该干什么?

A:当然是打开浏览器了。

在ride中按F5,打开Search Keywords的界面,搜索下open,很快能找到这个:

如果按照以上步骤,我们应该打开了一个谷歌浏览器,并打开了百度网站,那么如何让百度搜索我们想要的信息呢?

在RFS里,我们要操作的对象主要是一个个元素(Element),只要我们能通过一定的方式找到这些元素就可以。

RFS支持很多种对元素的定位方法,在这里,我根据经验推荐几种定位方法:

CSS:定位最为灵活,速度最快,学习好后能了解很多web相关知识。

jquery:作为css定位的补充使用。

Xpath:语法灵活,有不少插件可以直接找出xpath路径(虽然不是最合适路径),很多都喜欢使用,缺点是执行效率不高。

我们打开谷歌浏览器,并打开百度首页,按F12打开浏览器开发者工具:

我们来继续完善我们的第一条测试用例:

测试总要有个成功或者失败的条件,我们发现搜索后总会有这个:

我们可以根据搜索后出现的文本信息来判断是否搜索成功:

执行下,看看我们目前写的是否有问题,结果真的报错了:

把刚才的地址改成url的方式,就可以正常跑了:

但是还有个问题,我们跑完后,虽然测试用pass了,但是自动化打开的浏览器并没有关闭,由于关闭浏览器是每次全部测试用例测试完成后必须的动作,我们需要把关闭浏览器这个动作加到测试套件中

在测试套件的设置中增加teardown(完成后操作),用来在全部测试用例完成后关闭浏览器:

同理,我们其实也不是在每条用例中都要打开浏览器,所以也可以把打开浏览器并设置分辨率并最大化的操作放到测试套件的setup中去。

那么,问题来了,我们的setup只能放一个关键字,如何在一个关键字中完成这么多操作呢?

在这里,用户关键字出场了(掌声)

增加了关键字后,我们发现增加了个keywords的域,里面包含创建的关键字:

剪切(因为以后用不上了)上面关于打开浏览器的那三行代码,放到我们创建的关键字下面:

我们切换到表格界面看看刚才完成的用户关键字:

实际上,我们是封装了这三个动作,使用一个关键字就可以调用

我们把刚才写的用户关键字设置到测试套件的Setup中,这样每次套件中的用例执行的时候,会先执行这个setup里的关键字(多条连续跑只执行一次):

我们可以在测试套件中再写一条用例,在用例开始的时候使用go to关键字来完成打开淘宝页面的动作,从而开始操作淘宝的搜索功能:

选择多条的执行顺序是:测试套件setup---测试用例hello world---测试用例taobao---测试套件teardown:

基本的操作就是这些。

入门后需要多看Selenium2Library的关键字,有时候你想实现某个功能,搞了半天发现原来人家早都有了。

入门后还要多练习元素的定位,这个是基础,没有熟练的定位,就没有更高的工作效率。

【自动化测试交流】:574737577(备注ccc)icon-default.png?t=N4P3http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=1MDs4T0SvhL4arRoq3njIVb9HGXrRoj6&authKey=sx1h5dj77OV5obrcx6nE7Dn3sqEVuE4XrGqzqneReBJy3ojOL3oHMSH48XPKPWhW&noverify=0&group_code=574737577

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/619526.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软考A计划-电子商务设计师-模拟试题卷八

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

Shiro自定义过滤器会执行两次?看我怎么给你解决

关注“Java架构栈”微信公众号,回复暗号【Java面试题】即可获取大厂面试题。 最近九哥的一个学生在使用自定义ShiroFilter处理JWT校验时,发现自己写的Filter在处理一次请求时会被执行两次。这个问题困扰了他一个下午都没有解决,最后不得不求…

新手小白如何入门学习CTF?【网络安全】

最近有很多新手小白私信我:如何学习CTF?新手小白应该怎么入门CTF?想打CTF,但是没有思路怎么办? 昨天下班之后,花了几个小时,整理了一下CTF学习的思路与方法,分享给大家,如…

用jprofiler来分析 jvm 堆 内存泄露,fullgc

jvm 命令和工具_个人渣记录仅为自己搜索用的博客-CSDN博客 堆太大? 方法1: 重新设置堆后,重启,复现. 方法2: 切割 split -b 1M heap.bin smallfilescp smallfile* usernamemac-host:/Users/username/cat smallfile* > heap.bin官网文档 JProfiler Help - HPROF snapshot…

【逃离】UniAccess

能看到这篇文章,说明你已经是老屁股了(保命要紧) 上面是UniAccess功能 你想要做的事情无非是三种 不顾后果强力卸载UniAccess期望只保留(内网)网络认证禁用UniAccess部分功能 第一种:直接卸载,这里不做说明了&#x…

开发轮子(一):全国省/市/区/街道三、四级联动

概述 本服务提供中国标准行政区划数据查询功能,支持: 1 . 全国省、市、区/县、乡镇/街道 四级行政区划数据; 2 . 支持三级区划(省/市 - 区/县)轮廓数据; 3 . 支持区划查询、省市区列表、查询子级区划等功能…

十六、立方体贴图(天空盒)

第一部分 概念: 1) 引用 OpenGL ES 立方体贴图本质上还是纹理映射,是一种 3D 纹理映射。立方体贴图所使的纹理称为立方图纹理,它是由 6 个单独的 2D 纹理组成,每个 2D 纹理是立方图的一个面。 立方图纹理的采样通过一个 3D 向量…

CodeGeeX 2.0版本重大升级:通过聊天对话的方式直接操作代码

CodeGeeX 2.0版本正式上线!从命名上看这是一次大版本的升级。 上个月,CodeGeeX在VSCode和JetBrains IDEs的插件中,加入了智能问答(Ask CodeGeeX)功能,让用户可以在IDE中通过问答对话的方式解决技术问题。本…

Selenium自动化程序被检测为爬虫,怎么屏蔽和绕过

Selenium 操作被屏蔽 使用selenium自动化网页时,有一定的概率会被目标网站识别,一旦被检测到,目标网站会拦截该客户端做出的网页操作。 比如淘宝和大众点评的登录页,当手工打开浏览器,输入用户名和密码时&#xff0c…

docker 无法将“docker”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

💧 d o c k e r 无法将“ d o c k e r ”项识别为 . . . . . . \color{#FF1493}{docker 无法将“docker”项识别为......} docker无法将“docker”项识别为......💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页…

Elasticsearch:路由 - routing

你是否考虑过 Elasticsearch 如何知道将文档存储在何处? 它如何知道在哪里寻找它们,以及是否检索、更新或删除它们? 这是一个令人兴奋的过程,一切都归结为路由的概念。 路由介绍 路由是确定文档属于哪个分片以便检索它或将其存储在…

新手配learnsite

把下载好的learnsite放在C盘根目录下 改个名 开始,Microsoft SQL Server Tools 19,SQL Server Management studio 19 这里我其实是没看懂,但是我觉得是选个服务器。 点开数据库引擎这里试一下 因为我来回装好几次sql,这里只有ls2有印象好像是…

git statsh、git submodule

文章目录 git stash解决git pull和本地文件的冲突1、先将本地修改存储起来2、pull内容3、还原暂存的内容4、解决文件中冲突的的部分5、删除stash。6 、git stash pop 与 git stash apply <stash{id}> 的区别。 回退后的版本是不追踪的git 还原修改git submodule git stas…

SpringBoot整合达梦数据库的教程(详解)

一、官网下载试用版本 http://www.dameng.com/down.aspx 我是win 11系统下载如下&#xff1a; 二、安装 解压后 双击打开iso文件 然后点击安装 选择创建实例&#xff08;注意记住账号/密码 端口号 默认的是 SYSDBA/SYSDBA 5236&#xff09; 然后一直下一步 到完成&#xff…

Win11下查看快捷键占用情况

Win11下查看快捷键占用情况 使用 OpenArk&#xff0c;根据文档描述&#xff0c;它可以查看许多 Windows 系统信息&#xff0c;包括快捷键&#xff0c;支持 Win10。 操作步骤&#xff1a; 1.下载 OpenArk Github&#xff1a;https://github.com/BlackINT3/OpenArk 单文件下载&…

计算机毕业论文内容参考|基于c语言的新一代预约挂号系统的设计与实现

文章目录 导文文章重点前言系统架构相关技术与方法介绍网络通信技术数据库管理技术算法模型选择技术分析技术设计:技术实现:总结与展望:本文总结:后续工作展望:导文 计算机毕业论文内容参考|基于c语言的新一代预约挂号系统的设计与实现 文章重点 前言 随着科技的不断发展…

linuxOPS基础_linux软件包安装

软件包概述 上图是windows下的软件包 Linux下也有很多可以安装的软件&#xff0c;而这些软件的安装包可细分为两种&#xff0c;分别是源码包和二进制包。 Linux下软件的安装方式 ① RPM软件包安装 > 软件名称.rpm ② YUM包管理工具 > yum install 软件名称 -y ③ 源码…

红外-星光-黑光-全彩夜视摄像头选型

星光”、“黑光”、“AI超微光”、“极光”&#xff0c;在安防行业这些概念似乎比“低照度摄像机”本身要火的多。 无论营销名称是什么&#xff0c;归根到底&#xff0c;它们都是用不同的方法使摄像机能在夜间拍摄到更像白昼一般的 高清夜视摄像头除了以前我们在项目上经常使…

腾讯云服务器怎么使用?新手入门教程

腾讯云服务器入门教程包括云服务器CPU内存带宽配置选择&#xff0c;选择云服务器CVM或轻量应用服务器&#xff0c;云服务器创建后重置密码、远程连接、搭建程序环境等&#xff0c;腾讯云服务器网分享从0到1腾讯云服务器入门教程&#xff1a; 腾讯云服务器入门教程目录&#xf…

进程信号

目录 信号的产生方式 程序的崩溃 通过键盘产生 进程异常产生 系统调用产生 软件条件产生 信号产生中 函数介绍 sigset_t&#xff08;信号集&#xff09; sigprocmask函数 sigpending函数 信号处理 用户态和内核态的理解 处理信号的过程 信号捕捉 sigaction函数…