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

robotframework+selenium 进行webui页面自动化测试

robotframework其实就是一个自动化的框架,想要进行什么样的自动化测试,就需要在这框架上添加相应的库文件,而用于webui页面自动化测试的就是selenium库.

 关于robotframework框架的搭建我这里就不说了,今天就给大家根据一个登录的实例来讲一讲,selenium库的相关应用吧。 要想运用selenium库,首先是导入此库的信息。在哪里导入呢?

那就是在我们已经安装好的robotframework的操作页面即ride中导入。

打开ride,按照以下顺序依次建立项目:

1、新建测试项目

2、新建测试套件,在已经建好的项目下建立测试套件

3、新建测试用例,在已经建立好的套件下,创建自动化测试用例

建好以后的结构如下:

在建好的目录上左键单击套件名称,就会出现如下页面:

单击右上方的library标签,就会弹出如下页面:

在此页面,你可以直接在name栏输入selenium库文件名点OK,也可以点browse按钮,选择selenium库文件名,一般我是直接输入名称来导入的。

在这里输入的库文件名是Selenium2Library,导入成功后,在setting项目页面上就会一条黑色的记录展示出来,下图是导入了多个库以后的展示,如果导入失败,库名称将显示为红色,这时候你就要查看日志找原因了,这里就不多说了。

库文件可以导入在套件下,也可以在根目录下导入,不同位置导入的使用的范围不同,其它没有区别。

库文件导入成功以后,我们就可以开始webui页面自动化测试脚本的编写了。

我们就拿登录163邮箱来做一个测试吧。

登录163邮箱的测试用例大概是这样的:

首先是打开163邮箱登录页面

其次是输入正确的账号,密码

然后登录

最后是检查登录是否成功。

我们根据已经写好的测试用例步骤及检查结果来写这条自动化测试脚本,写好的脚本大概是这样的:

结合这个脚本给大家讲讲这里面这些字段的用法:

Teardown:这个字段可以理解为后处理,就是自动化脚本跑完做的一个处理,在运用selenium库进行自动化测试的时候,这里面一般是设置的close browse,就是自动化用例脚本跑完之后,关闭浏览器。

Timeout:超时时间设置,这个设置的作用就是防止自动化脚本在执行测试的时候卡在某一个环节一走卡着,不能进行下一条脚本测试。这个时间的设置要根据当前你测试脚本花费的时间来填写,并没有固定值。

这两个是测试脚本的一个预设值,接下来的内容就是登录163邮箱的一个实际测试脚本了。

我们的所看到的截图中的第一列蓝色的字体的关键字,其实也就是我们对应的操作动作。

Open browse:就是打开浏览器,这一行所对应的第二列就是我们要登录的163邮箱的地址,所对应的第三列就是浏览器类型,我们常用的浏览器类型有IE,chrome,firefox等,这个根据实际填写,所要说明一点的是,无论你输入的是哪个浏览器,在python的安装目录下,一定要有这个浏览器相应的驱动文件,有驱动文件版本必须与你电脑上当前安安装的浏览器版本是一致的,否则脚本运行就会报错。

Sleep:在打开浏览器这个动作后我用了一个关键字sleep,其实就是等待的意思,因为打开浏览器网页到页面完全展示出来是有一定时间的,所以在这里我用了一个sleep关键字,时间是根据网页完全展示出来的一个估算时间,你可以用wait until element contains这样一个关键字来等待

Select frame.:在完全展示出来后,这里又用一个select frame来选择一下窗口,sele为什么要用这个,是因为输入账号,密码,登录这几个选择在网页中用了这样的一个嵌套的格式,如果不用select frame来选择一下,无论我们账号,密码输入的定位多正确,自动执行测试的时候都无法输入账号,密码从而进行登录。

那么如何知道这个页面用了frame呢,就要通过查看网页的html代码来看了。像这个登录页面,当选中账号输入框时其位置代码相应位置被标蓝,顺着这个位置向上查它的父路径,发现有一个iframe标签,选中iframe. 标签这段代码,发现整个账号,密码框,登录所在的位置都被选中,说明这几个元素是在iframe标签下的,我们要定位这几个元素,需先选中切换到里面去。

像这种需要进行选择切换的还有网页内嵌套表格,通过跳转链接打开新的网页等,大家在进行元素定位时要多留意相应的标签,在进行元素定位时,使用正确的选择关键字。

如从百度首页通过链接进入hao123网页,因为是打开新的网页,在这里就用了switch window.

Input text:账号,密码输入,这行对应的第二列就是账号密码框所对应的位置,这个位置是如何定位出来的,这里用到了了selenium库中的元素定位。元素定位常用的有CSS,Xpath,name,id等,这里就不详述了,不会的可以到网上搜一下。

此两行所对应的第三列,就是相应的用户名和密码。在这里我把用户名和密码设置成一个变量,所以在用的时候是直接引用了变量名。

变量的设置很简单的,选中套件或根目录右键单击,在弹出的菜单中选中new scalar,,在接下来弹出的页面中,设置变量名,和变量值点OK就可以了,如用户名变量的设置:

Click element:这是一个单击鼠标左键的动作,所对应的第二列是此元素的位置路径。鼠标左键单击还有click button,click link,click button关键字一般用于元素type为button时,如果元素 type不是button类型的,用这个关键字,就不会执行这个鼠标动作。

Click link一般用于这个元素包含有超链接时,如百度首页的hao123图片,就带了一个超链接属性:

好了,接着上面的脚本来说,在登录动作后,这里又用了一个sleep,其实这里也可以用wait until这样的关键字的,这个看个人习惯,不论用哪一个等待,这个地方都是要等几秒中才能进行下一步操作的,原因同上。

unselect frame:这个是和select frame同对出现的,使用了select frame关键字之后,在跳出这个格式以后,一定要释放掉。

Element should be enabled:这是登录成功后的一个验证,验证页面是否跳转到了我们所期望的页面中去,那么这里的所对应的第二列的元素位置就是跳转以后可以代表这个页面的的一个元素的位置。

好了,用selenium库进行webui页面测试的相关内容就给大家介绍到这里。最后再给大家说一下,selenium库关键字有很多,要用哪个,怎么用记不住的话,可以在ride用例编写页面按F5 键查看哦。

Web自动化测试全套实战教程:Python+Selenium4环境搭建

相关文章:

robotframework+selenium 进行webui页面自动化测试

robotframework其实就是一个自动化的框架,想要进行什么样的自动化测试,就需要在这框架上添加相应的库文件,而用于webui页面自动化测试的就是selenium库. 关于robotframework框架的搭建我这里就不说了,今天就给大家根据一个登录的实…...

手机突然无法获取ip地址

在日常生活中,我们对手机的依赖越来越大,尤其是在联网方面。然而,有时候我们可能会遇到手机无法获取IP地址的问题,这给我们的正常使用带来了很多不便。当我们的手机无法获得IP地址时,我们将无法连接到互联网或局域网&a…...

C++——关于命名空间

写c项目时,大家常用到的一句话就是: using namespace std; 怎么具体解析这句话呢? 命名冲突: 在c语言中,我们有变量的命名规范,如果一个变量名或者函数名和某个库里面自带的库函数或者某个关键字重名&…...

怎么进行流程图制作?用这个工具制作很方便

怎么进行流程图制作?流程图是一种非常有用的工具,可以帮助我们更好地理解和展示各种复杂的业务流程和工作流程。它可以将复杂的过程简化为易于理解的图形和文本,使得人们更容易理解和跟踪整个流程。因此,制作流程图是在日常工作中…...

【ChatGPT 指令大全】怎么使用ChatGPT来辅助学习英语

在当今全球化的社会中,英语已成为一门世界性的语言,掌握良好的英语技能对个人和职业发展至关重要。而借助人工智能的力量,ChatGPT为学习者提供了一个有价值的工具,可以在学习过程中提供即时的帮助和反馈。在本文中,我们…...

Ubuntu20配置仅主机网络

Ubuntu20配置仅主机网络,使虚拟机与物理机网络联通且配置固定IP 进入终端:vim /etc/netplan/01-network-manager-all.yaml 修改为: network:ethernets:enp0s8:addresses: [192.168.138.108/24]dhcp4: false optional: truegateway4: 192.…...

调整奇数偶数顺序

调整数组使奇数全部都位于偶数前面。 题目: 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。 思路: 1. 给定两个下标left和right&#…...

日志的规范

确定日志级别: 确保你的系统有一个明确的日志级别策略。通常,日志级别包括DEBUG,INFO,WARN,ERROR和FATAL。DEBUG级别的日志记录所有详细信息,适用于开发和调试环境。INFO级别的日志记录常规操作信息&#x…...

Spring AOP(AOP概念,组成成分,实现,原理)

目录 1. 什么是Spring AOP? 2. 为什么要用AOP? 3. AOP该怎么学习? 3.1 AOP的组成 (1)切面(Aspect) (2)连接点(join point) (3&a…...

Android WebView简单应用:构建内嵌网页浏览功能

在现代移动应用开发中,内嵌网页浏览功能是许多应用程序的常见需求。Android平台提供了WebView组件,它允许开发者将网页内容嵌入到应用中,并提供了丰富的功能和定制选项。本文将介绍如何在Android应用中使用WebView组件,帮助您快速…...

并发——乐观锁常见的两种实现方式,乐观锁的缺点

文章目录 乐观锁常见的两种实现方式1. 版本号机制2. CAS算法 乐观锁的缺点1 ABA 问题2 循环时间长开销大3 只能保证一个共享变量的原子操作 乐观锁常见的两种实现方式 乐观锁一般会使用版本号机制或CAS算法实现。 1. 版本号机制 一般是在数据表中加上一个数据版本号version字段…...

Spring 事务管理

目录 1. 事务管理 1.1. Spring框架的事务支持模型的优势 1.1.1. 全局事务 1.1.2. 本地事务 1.1.3. Spring框架的一致化编程模型 1.2. 了解Spring框架的事务抽象(Transaction Abstraction) 1.2.1. Hibernate 事务设置 1.3. 用事务同步资源 1.3.1…...

unity修改单个3D物体的重力的大小该怎么处理呢?

在Unity中修改单个3D物体的重力大小可以通过以下步骤实现: 创建一个新的C#脚本来控制重力: 首先,创建一个新的C#脚本(例如:GravityModifier.cs)并将其附加到需要修改重力的3D物体上。在脚本中&#xff0c…...

[Qt]FrameLessWindow实现调整大小、移动弹窗并具有Aero效果

说明 我们知道QWidget等设置了this->setWindowFlags(Qt::FramelessWindowHint);后无法移动和调整大小,但实际项目中是需要窗口能够调整大小的。所以以实现FrameLess弹窗调整大小及移动弹窗需求,并且在Windows 10上有Aero效果。 先看一下效果&#xf…...

【API生命周期看护】API日落

一、基本概念 在API的整个生命周期中,不可能是永远不变的。功能可能有变动、服务也可能有升级迭代,这个时候对外的能力入口:API自然也需要改变。 一般来说,API的变动是不可以引入兼容性问题的,也即不管做什么变动&am…...

PHP 使用ThinkPHP实现电子邮件发送示例

文章目录 首先我们需要设置我们的邮箱客户端授权,获取到授权码找到我们的邮箱设置去账号中找到这一堆服务,找到后开启smtp服务开启服务后管理服务 接下来需要去下载相应的第三方类库(我这里使用的是PHPMailer)在thinkPHP中封装一下邮件服务类实际调用效果…...

Leetcode-每日一题【剑指 Offer 18. 删除链表的节点】

题目 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 注意:此题对比原题有改动 示例 1: 输入: head [4,5,1,9], val 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调…...

[LINUX使用] top 命令的使用

COLUMNS150 LINES100 top 序号 是否为启动命令 命令模板 详解 1 no vh 帮助 2 yes -d 0.01 0.01秒的间隔刷新top输出 3 no c COMMAND列切换 4 yes -e [k | m | g | t | p] 以何种计量单位显示内存列 k-kb,m-mb,g-gb,t-t…...

通过redis进行缓存分页,通过SCAN扫描进行缓存更新

问题:当我们要添加缓存时,如果我们用了PageHelper时,PageHelper只会对查询语句有效(使用到sql的查询),那么如果我们把查询到的数据都添加到缓存时,就会无法进行分页; 此时我们选择将…...

C#小轮子 Debug,Release,发布模式如何运行不同的代码

文章目录 前言C#运行模式运行模式介绍三种模式区分代码 前言 编译模式和发布模式的代码不一样是非常正常的。比较常见的是数据库不一样。编译测试数据库和发布真实的数据库地址不一样。 C#运行模式 运行模式介绍 运行模式有三种: Debug 不进行优化,…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...

LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)

在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...

如何配置一个sql server使得其它用户可以通过excel odbc获取数据

要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据,你需要完成以下配置步骤: ✅ 一、在 SQL Server 端配置(服务器设置) 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到:SQL Server 网络配…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染(SSR)与静态网站生成(SSG) 框架,由 Vercel 开发。它简化了构建生产级 React 应用的过程,并内置了很多特性: ✅ 文件系…...