当前位置: 首页 > news >正文

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

目录

前言:

自动化框架的选择

测试环境的搭建

导入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

 

相关文章:

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

目录 前言: 自动化框架的选择 测试环境的搭建 导入Selenium2Library包 关键字是什么? 创建测试用例 前言: 自动化测试的重要性越来越受到人们的重视,因为它可以提高测试效率、降低测试成本并减少人为错误的出现。为了满足这…...

Java 9 模块化系统详解

Java 9 模块化系统详解 一、简介1. 引入模块化系统原因2. 模块化系统带来的优势和挑战3. 模块化关键概念 二、模块化基础1. 模块化源代码结构规范2. 模块定义与描述符3. 打包可执行模块 三、模块化系统的高级特性1. 模块发现与解决依赖2. 模块化升级与替换3. 模块化动态访问 四…...

Windows定时执行Python脚本

在Linux环境下我们可以使用crontab工具来定时的执行脚本,可以很轻松的管理各个虚拟环境下的py文件在Windows上可以使用任务计划程序来定时执行我们的脚本 关于这个的基本使用可以查看我前面的博客 https://blog.csdn.net/wyh1618/article/details/125725967?spm10…...

数据科学简介:如何使用 Pandas 库处理 CSV 文件

部分数据来源:ChatGPT 什么是 CSV 文件? CSV ( Comma Separated Values)文件是一种常见的文本文件格式,它通常用于存储结构化数据,因为它可以轻松地转换成电子表格,如Excel。 CSV 文件是以逗号作为分隔符的表格数据。文件中的每行代表一个记录,每列代表一个属性。例如…...

面试专题:java多线程(2)-- 线程池

1.为什么要用线程池? 线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。 这里借用《Java并发编程的艺术》提到的来说一下使用线程池的好处: 降低资源消…...

Linux文件权限及用户管理

文件权限 在Linux中,每个文件和目录都有一组权限,这些权限决定了哪些用户可以访问文件或目录,以及他们可以进行什么样的操作。权限分为三类: 所有者权限:这些权限适用于文件或目录的所有者。 组权限:这些…...

以AI为灯,照亮医疗放射防护监管盲区

相信绝大部分人都有在医院拍X光片的经历,它能够让医生更方便快速地找出潜在问题,判断病人健康状况,是医疗诊断过程中的常见检查方式。但同时X射线也是一把双刃剑,它的照射量可在体内累积,对人体血液白细胞有杀伤力&…...

Golang单元测试详解(一):单元测试的基本使用方法

Golang 单元测试 Golang 中的单元测试是使用标准库 testing 来实现的,编写一个单元测试是很容易的: 创建测试文件:在 Go 项目的源代码目录下创建一个新的文件(和被测代码文件在同一个包),以 _test.go 为后…...

数据库的序列

目录 一、序列是什么 二、序列的用途 二、创建序列 三、查看、修改、删除序列 四、使用序列 (1)在插入语句中使用 (2)不在插入语句中使用 五、使用序列的例子 一、序列是什么 数据库对象分为:用户、视图、索引…...

2022年回顾

年总写完了(已持续多年),顺便写个小的回顾。 寻找属于自己的方向 无论当前干啥,大多数都不是真正适合你的,但是,你又不能不做下去,那么,持续的寻找适合的,就是一种解开…...

40亿个QQ号,限制1G内存,如何去重?

40亿个unsigned int,如果直接用内存存储的话,需要: 4*4000000000 /1024/1024/1024 14.9G ,考虑到其中有一些重复的话,那1G的空间也基本上是不够用的。 想要实现这个功能,可以借助位图。 使用位图的话&a…...

【django】django的orm的分组查询

前言:django当中分组查询如何实现? annotate from myapp import models from django.db.models.functions import TruncMonth from django.db.models import Count,Avg# 分组 values 就是取值作用 model.Book.objects.values(month).annotate(countCo…...

MySQL5.8在Windows下下载+安装+配置教程

MySQL是一款常用的关系型数据库管理系统,本文将介绍MySQL5.8在Windows下的安装配置教程。 1. 软件下载地址 免安装版下载地址:https://dev.mysql.com/downloads/mysql/安装版下载地址:https://dev.mysql.com/downloads/installer/ 2. 免安…...

Flask or FastAPI? Python服务端初体验

1. 引言 最近由于工作需要,又去了解了一下简单的python服务搭建的相关工作,主要是为了自己开发的模型或者工具给同组的人使用。之前介绍的针对于数据科学研究比较友好的一个可以展示的前端框架Streamlit可以说是一个利器。不过,随着ChatGPT的…...

《计算机组成原理》唐朔飞 第7章 指令系统 - 学习笔记

写在前面的话:此系列文章为笔者学习计算机组成原理时的个人笔记,分享出来与大家学习交流。使用教材为唐朔飞第3版,笔记目录大体与教材相同。 网课 计算机组成原理(哈工大刘宏伟)135讲(全)高清_…...

Linux:apache网页优化

Linux:apache网页优化 一、Apache 网页优化二、网页压缩2.1 检查是否安装 mod_deflate 模块2.2 如果没有安装mod_deflate 模块,重新编译安装 Apache 添加 mod_deflate 模块2.3 配置 mod_deflate 模块启用2.4 检查安装情况,启动服务2.5 测试 m…...

涨点技巧:注意力机制---Yolov8引入Resnet_CBAM,CBAM升级版

1.计算机视觉中的注意力机制 一般来说,注意力机制通常被分为以下基本四大类: 通道注意力 Channel Attention 空间注意力机制 Spatial Attention 时间注意力机制 Temporal Attention 分支注意力机制 Branch Attention 1.1.CBAM:通道注意力和空间注意力的集成者 轻量级…...

solr教程

一:安装配置 下载完成之后,解压solr文件,解压tomcat 1.1 在tomcat安装solr,并且建立solrCore 把solr5.5目录下的server/solr-webapp/webapp 重命名为solr,并且放置到tomcat/webapp的目录下。 打开tomcat/webapp/solr/WEB-INF/web.xml新建…...

基于java语言编写的爬虫程序

Java语言可以使用Jsoup、HttpClient等库进行网络爬虫开发,其中Jsoup提供了HTML解析和DOM操作的功能,HttpClient则提供了HTTP协议的支持。你可以通过使用这些库,构建网络爬虫程序来爬取指定网站的数据。需要注意的是,应该遵守网站的…...

UM2082F08 125k三通道低频无线唤醒ASK接收功能的SOC芯片 汽车PKE钥匙

1产品描述 UM2082F08是基于单周期8051内核的超低功耗8位、具有三通道低频无线唤醒ASK接收功能的SOC芯片。芯片可检测30KHz~300KHz范围的LF (低频)载波频率数据并触发唤醒信号,同时可以调节接收灵敏度,确保在各种应用环境下实现可靠唤醒,其拥…...

Robots.txt 文件

什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

day36-多路IO复用

一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统:AI驱动的职业规划平台技术解析 引言:数字时代的职业革命 在当今瞬息万变的就业市场中,传统的职业规划方法已无法满足个人和企业的需求。据统计,全球每年有超过2亿人面临职业转型困境,而企业也因此遭…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter

java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)

名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...

2.3 物理层设备

在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给…...

【大厂机试题解法笔记】矩阵匹配

题目 从一个 N * M(N ≤ M)的矩阵中选出 N 个数,任意两个数字不能在同一行或同一列,求选出来的 N 个数中第 K 大的数字的最小值是多少。 输入描述 输入矩阵要求:1 ≤ K ≤ N ≤ M ≤ 150 输入格式 N M K N*M矩阵 输…...