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

UI 自动化测试 —— selenium的简单介绍和使用

selenium 是 web 应用中基于 UI 的自动化测试框架,支持多平台、多浏览器、多语言。

提到 UI 自动化就先了解什么是自动化测试?

目录

1. 自动化测试

2. UI 自动化

2.1 UI 自动化的特点

2.2 UI 自动化测试的优缺点

2.3 UI 自动化测试的使用对象

2.4 UI 自动化测试框架

3. selenium

3.1 selenium IDE

3.1.1 selenium IDE 的使用

3.1.2 selenium IDE 的特点

3.2 webdriver

3.2.1 搭建 selenium 测试环境

3.2.2 webdriver 的工作原理

3.2.3 编写一个简单的脚本

1. 自动化测试

自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转换为机器执行的过程。自动化测试包括 UI 自动化,接口自动化,单元测试自动化。

自动化测试过程:

 

2. UI 自动化

今天学习的就是 UI 自动化测试,UI自动化测试就是对系统的界面元素进行操作,用脚本实现模拟用户的使用,完成功能的正常和异常测试。

2.1 UI 自动化的特点

  1. 用例维护量大;
  2. 页面相关性强,必须后期项目页面开发完成后介入;
  3. UI 测试适合界面变动较小的项目。

2.2 UI 自动化测试的优缺点

优点:

  1. 降低系统由于变更或者多期开发引起的大量的回归测试的人力投入,减少重复测试的时间,实现快速回归测试;
  2. 创建可靠的测试过程,减少人为错误;
  3. 可以运行更多更繁琐的测试;
  4. 可以更好的利用资源,减少人力资源;
  5. 可以执行一下手工测试无法完成的测试。

缺点:

自动化测试是工具执行,无法进行主观判断,对一些人眼容易发现的错误无法判断,比如对界面色彩、布局等;
自动化测试工具本身就是一个产品,在不同的系统平台可能会受到影响,可能会影响测试的结果;
对于需求更改频繁的系统,不适合自动化测试,因为测试脚本的维护和设计比较困难;
自动化测试要编写脚本,设计场景,这些对测试人员的要求较高,测试的设计直接影响测试的结果。

2.3 UI 自动化测试的使用对象

实验自动化测试的前提条件:需求变动不频繁,项目周期足够长,自动化测试脚本可重复利用。

适合做自动化测试的项目:

  1. 产品型项目:产品型项目新版本是在旧版本上进行改进,功能变动不大的项目,但是项目的新老功能都必须进行回归测试。
  2. 机械并频繁的测试。每次都需要输入相同、大量的一些数据,并且在一个项目中运行的周期比较长。比如兼容性测试。
     

2.4 UI 自动化测试框架

比如 windows 客户端测试的 AutolT, web 测试的 selenium 以及 TestPlant eggPlant,Robot framework等。今天主要学习的就是 selenium。

3. selenium

selenium 的组成:

selenium 1.0:selenium IDE、selenium RC、selenium grid

selenium 2.0:selenium IDE、selenium RC、webdriver、selenium grid

selenium 3.0:selenium IDE、webdriver、selenium grid
 

3.1 selenium IDE

selenium IDE 是一个用于 selenium 测试的集成开发环境,可以直接在浏览器录制用户的操作,并且能回放,编辑和调试测试脚本。可以使用其录制一个基本的脚本,然后修改逻辑,采用关键字驱动的方式进行脚本开发的。

3.1.1 selenium IDE 的使用

方式一:下载 Firefox 浏览器,安装 selenium IDE 插件。

方式二:使用 Edge 中的 selenium IDE 插件。

Chrome 上也可以,但是大多数电脑都打不开 Chrome 应用商店。

因为本机上有 Edge 浏览器,所以直接使用 Edge 作为示范。

1. 先找到浏览器中的扩展,下载插件selenium IDE。

 2. 下载完成后,点击菜单栏中的插件。找到  selenium IDE 插件点击。

 

3. 新建一个新测试在一个新工程中。

 4.在新工程中添加测试用例,创建工程名,添加 url 进行录制脚本。

 

 

 

 5.根据关键字进行驱动生成的代码。

 

  target:使用右键检查页面就可以查看页面组建的id。

 

6.一个完整的自动化测试用例不仅包括 command、target、vaule,还有 assert 断言。通过断言就可以自动对比实际结果和预期结果是否一致。

比如断言文本,断言值等。

 

  7.运行脚本。

8.除了可以通过 selenium 录制脚本,也可以进行手动添加脚本,同样是通过关键字,command、target、vaule 以及 assert。

9.导出脚本。

 可以有多种语言,多种框架选择。

 

 ps:如果想要导出 python unittest 框架脚本,可以使用 Katalon 插件。

3.1.2 selenium IDE 的特点

  1. 容易在页面上进行录制;
  2. 能自动通过 id,name 和 xpath 来定位页面元素;
  3. 自动执行 selenium 命令;
  4. 能够进行调试和设置断点;
  5. 录制生成的脚本能够转化成各种语言;
  6. 可以加入断言,用来判断预期和实际结果是否一致。

3.2 webdriver

webdriver 是对浏览器的 API,也就是对浏览器中元素或者浏览器的操作。webdriver 替代了 selenium RC,提高了对浏览器的调度效率。

3.2.1 搭建 selenium 测试环境

1.安装 python 环境

2.安装 selenium 

3.安装驱动

具体细节可以百度搜索。

3.2.2 webdriver 的工作原理

webdriver 的实现,依据的是 C/S 模式。工作流程是:

  1. webdriver 启动浏览器后,将目标浏览器绑定到特定的端口,启动后的浏览器则作 webdriver 的 remote server。
  2. 客户端(也就是测试脚本),借助 ComandExecutor 发送HTTP请求给 Server 端。
  3. Server 端需要依赖原生的浏览器组件,转化 Web Service 的命令为浏览器 native 的调用来完成操作。

Server:就是 Remote Server 端,可以是任意的浏览器。
Client:就是我们的测试脚本。

 

3.2.3 编写一个简单的脚本

# coding = utf-8
# 防止乱码,可加可不加
# 导包
from selenium import webdriver
# 创建浏览器对象
driver = webdriver.Chrome()
# 打开百度首页
driver.get("https://www.baidu.com")
# 在百度的输入框中输入selenium,一个控件有若干属性id,name等,百度的输入框id叫 kw
driver.find_element_by_id("kw").send_keys("selenium")
# 点击百度按钮,搜索按钮的id叫 su
driver.find_element_by_id("su").click()
# 关闭浏览器
driver.quit()

相关文章:

UI 自动化测试 —— selenium的简单介绍和使用

selenium 是 web 应用中基于 UI 的自动化测试框架,支持多平台、多浏览器、多语言。 提到 UI 自动化就先了解什么是自动化测试? 目录 1. 自动化测试 2. UI 自动化 2.1 UI 自动化的特点 2.2 UI 自动化测试的优缺点 2.3 UI 自动化测试的使用对象 2.4…...

mybatisPlus中apply的使用以进行联表等复杂sql语句

在 MyBatis-Plus 中,apply() 方法可以用于添加任意的 SQL 片段,包括联表查询。因此,你可以使用 apply() 方法来处理各种类型的联表查询。 使用 apply() 方法的好处是可以在查询条件中直接添加原生的 SQL 片段,而不受 MyBatis-Plu…...

自学Python技术的方法

目录 一、Python技术介绍 二、学习前的准备工作 三、学习时的具体操作 四、如何巩固学习 Python是一种高级编程语言,被广泛用于软件开发、数据分析、人工智能和科学计算等领域。它于1991年由Guido van Rossum创建,并且其简洁、易读的语法以及丰富的标…...

python熟悉python基础语法,了解html网络结构,了解json格式数据,含有字符串

前言 Python网络爬虫是利用Python编写的程序,通过自动化地访问网页、解析html或json数据,并提取所需信息的技术。下面将详细介绍一些与Python网络爬虫相关的重要知识点。 1、Python基础语法: 变量和数据类型:学习如何声明变量以及…...

linux mail -s发送邮件异常解决

异常: Error initializing NSS: Unknown error -8015. "/root/dead.letter" 11/301 . . . message not sent. 出现此问题,大概率是和证书相关。如果没有安装证书,请先安装: 1,下载 yum -y install mailx …...

Netty核心技术七--Google Protobuf

1.编码和解码的基本介绍 编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码 codec(编解码器) 的组成部分有两个:decoder(解码器)和encoder(编码器)。encoder 负责把…...

【Docker】Docker常用命令总结

文章目录 一、帮助命令二、镜像命令三、容器命令四、常用的其他命令 在开发过程中,经常涉及到 docker 的相关操作,本文对常用的指令进行汇总。 一、帮助命令 docker version # 显示docker版本信息 docker info # 显示docker系统信息&#xff…...

React 对比class与Effect Hook优化响应式数据更新监听,感受useEffect真正的强大

还是之前写过的一个组件 import React from "react"export default class index extends React.Component{constructor(props){super(props);this.state {name: "小猫猫"}}componentDidMount ()>{document.title this.state.name;}componentDidUpda…...

AWS Lambda 介绍

计算服务的演进 EC2------Container-------Lambda 虚拟机---容器--------------serverless无服务器架构 什么是AWS Lambda? AWS lambda的核心是事件驱动,驱动可能来自,Alexa,SNS,DynamoDB,S3,Kinesis等&…...

linux之权限管理

目录 1.一.基本小语句 2.文件权限操作chmod 1.一.基本小语句 ls - a 查看此文件夹所有和隐藏内容 ls - l 查看此文件夹权限 chown 改变文所有者 2.文件权限操作chmod chmod 参数 文件名 文件的权限主要针对三类对象进行定义   owner 属主, u:针对前三个部分的权限修改   …...

【设计模式与范式:行为型】61 | 策略模式(下):如何实现一个支持给不同大小文件排序的小程序?

上一节课,我们主要介绍了策略模式的原理和实现,以及如何利用策略模式来移除 if-else 或者 switch-case 分支判断逻辑。今天,我们结合“给文件排序”这样一个具体的例子,来详细讲一讲策略模式的设计意图和应用场景。 除此之外&…...

【C++】auto_ptr为何被唾弃?以及其他智能指针的学习

搭配异常可以让异常的代码更简洁 文章目录 智能指针 内存泄漏的危害 1.auto_ptr(非常不建议使用) 2.unique_ptr 3.shared_ptr 4.weak_ptr总结 智能指针 C中为什么会需要智能指针呢?下面我们看一下样例: int div() {int a, b;cin >&g…...

数据结构练习题1:基本概念

练习题1:基本概念 1 抽象数据类型概念分析2. 逻辑结构与存储结构概念分析3.综合选择题4.综合判断题5.时间复杂度相关习题6 时间复杂度计算方法(一、二、三层循环) 1 抽象数据类型概念分析 1.可以用(抽象数据类型)定义…...

如何消除Msxml2.XMLHTTP组件的缓存

之前使用这个组件,是每隔十分钟取数据,没有遇到这个缓存问题, 这次使用它是频繁访问接口,就出现了一直不变的问题。觉得是缓存没有清除的问题。 网上搜了一些方案。最好的方案就是给url地址末尾给一个随机参数。用于让组件觉得是…...

深入理解Java虚拟机jvm-运行时数据区域(基于OpenJDK12)

运行时数据区域 运行时数据区域程序计数器Java虚拟机栈本地方法栈Java堆方法区运行时常量池直接内存 运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的…...

(OpenCV) 基础demo

文章目录 前言Demo图片录制播放人脸识别 END 前言 OpenCV - Open Computer Vision Library OpenCV的名声想必不用多说了。 本文介绍4个基础使用demo。分别为,显示图片,录制视频,播放视频和一个基于开源算法库的人脸识别小demo。 只要环境…...

using 的使用

作者: 苏丙榅 链接: https://subingwen.cn/cpp/using/ 在 C 中 using 用于声明命名空间,使用命名空间也可以防止命名冲突。在程序中声明了命名空间之后,就可以直接使用命名空间中的定义的类了。在 C11 中赋予了 using 新的功能,让C变得更年轻…...

Websocket、Socket、HTTP之间的关系

Websocket、Socket、HTTP之间的关系 ★ Websocket是什么?★ Websocket的原理★ websocket具有以下特点:★ webSocket可以用来做什么?★ websocket与socket区别:★ WebSocket与HTTP区别 ★ Websocket是什么? ● Websocket是HTML5下…...

hustoj LiveCD版系统在局域网虚拟机安装和配置

root权限 打开terminal命令行输入sudo su输入初始密码freeproblemsetmysql数据库的密码的位置,如何登陆数据库 数据库账号密码存放在两个配置文件中: /home/judge/etc/judge.conf/home/judge/src/web/include/db_info.inc.php 新版本中,快…...

读书-代码整洁之道10-14

类 类的三大特性:封装、继承、多态;类应该短小;单一权责原则认为,类或模块应有且只有一条加以修改的理由;当类丧失了内聚性,就拆分它;隔离修改 系统 构造和使用是非常不一样的过程。每个应用…...

UDP 广播/组播

广播UDP与单播UDP的区别就是IP地址不同,广播使用广播地址xxx.xxx.xxx.255,将消息发送到在同一广播网络上的每个主机,广播/组播只能用udp进行实现 函数:int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_topt…...

高效创作助手:ChatGPT最新版实现批量撰写聚合文章的全新水平

随着人工智能技术的不断发展,ChatGPT最新版作为一款智能创作助手,实现了批量撰写聚合文章的全新水平。它能够在短时间内生成高质量的文章,极大地提高了创作效率。本文将从随机8-20个方面对ChatGPT最新版进行详细的阐述,让我们一起…...

Python中的包是什么,如何创建和使用包?

在Python中,包是一种将相关模块分组在一起的方式。它可以让我们更好地组织和重用代码。 一个Python包实际上是一个文件夹,其中包含该包的Python模块和其他资源文件(例如配置文件、数据文件等)。包的根目录通常包含一个名为__init…...

Spring Cloud Alibaba Seata(二)

目录 一、Seata 1、Seata-AT模式 1.1、具体案例 1.2、通过Seata的AT模式解决分布式事务 2、Seata-XA模式 3、Seata-TCC模式 4、Seata-SAGA模式 一、Seata 1、Seata-AT模式 概念:AT模式是一种无侵入的分布式事务解决方案,在 AT 模式下&#xff0c…...

如何在 MySQL 中使用 COALESCE 函数

1. 简介 在 MySQL 中,COALESCE 函数可以用来返回参数列表中的第一个非空值。如果所有参数都为空,则返回 NULL。本文将介绍 COALESCE 函数的语法和用法,并通过示例演示其效果。 2. 语法 COALESCE 函数的语法如下所示: COALESCE(…...

Python爬虫之Scrapy框架系列(22)——初识分布式爬虫scrapy_redis

目录: 分布式爬虫(Scrapy\_redis):1.简单介绍:2.Scrapy_redis的安装:分布式爬虫(Scrapy_redis): 官方文档:https://scrapy-redis.readthedocs.io/en/stable/1.简单介绍: scrapy_redis是一个基于Redis的Scrapy组件,用于scrapy项目的分布式部署和开发。 特点: 分布…...

ChatGPT的前世今生

原文首发于博客文章ChatGPT发展概览 ChatGPT 是OpenAI开发的人工智能聊天机器人程序,于2022年11月推出。该程序使用基于 GPT-3.5、GPT-4 架构的大语言模型并以强化学习训练。ChatGPT目前仍以文字方式交互,而除了可以用人类自然对话方式来交互&#xff0c…...

WireShark常用协议抓包与原理分析

1.ARP协议(地址解析协议) nmap 发现网关nmap -sn 192.168.133.2wireshark 抓请求包和响应包 arp请求包内容 arp响应包内容 总结:请求包包含包类型(request),源IP地址,源MAC地址,目标IP地址,目标MAC地址(未知,此处为全0);响应包包含包类型(reply),源IP地址,源…...

Mysql数据库操作总结

文章目录 1. DDL(Data Definition Language - 数据定义语言)1.1 数据库1.2 数据表(创建查询删除)1.3 数据表(修改) 2. 数据类型2.1 数值2.2 字符2.3 日期 3. 字段约束3.1 约束3.2 主键约束修改3.3 主键自增 联合主键 4. DML(Data Manipulation Language - 数据操作语言)4.1 添…...

在 ZBrush、Substance 3D Painter 和 UE5 中创作警探角色(P2)

大家好,下篇分享咱们继续来说警探角色的重新拓扑、UV、材质贴图和渲染处理。 重新拓扑/UV 这是对我来说最不有趣的部分——重新拓扑。它显然是实时角色中非常重要的一部分,不容忽视,因为它会影响大量的 UV、绑定和后期渲染,这里…...

wordpress怎么把分类弄成导航/怎么给自己的网站设置关键词

每一个项目都有其需求,这也是做这个项目的目的和背景。否则便构成不了这个项目,这个项目也不会有意义。同样的我们所做的项目要有其市场价值、社会意义,这样我们的项目才具有完整性。 接下来的介绍我希望大家能够了解到《品优购》是怎样的一个…...

做网站用什么软件最简单/网络推广是做什么工作的

最近朋友几篇文章介绍了改二进制扩展的文章. 关联文章的地址 #include<stdio.h> /*求num 二进制中1 的个数&#xff0c;复杂度为o(count) ,num&(num-1) 每次清除右起第一个1斟酌 num1110 num-11101num&(num-1)1100 */ int numCount(int num) {int count 0;wh…...

flash怎么做网站/淄博seo网站推广

读<<乌合之众(The Crowd 1895)-[法.古斯塔夫.勒庞]>>有感 此书成书于法国工业革命时期&#xff0c;作者引用各种历史事件来说明从众心理带来的影响。下面个人从三个方面讲讲这种心理的表现: 1.商家利用从众心理激发消费者购买欲望: 商品前期做了充分的广告之后,消费…...

中国建筑装饰百强排名/济南seo优化公司

基于Java新IO的Web安全网关罗振兴;努尔买买提.黑力力;徐大伟;赵琛;林作铨【期刊名称】《计算机工程》【年(卷),期】2007(033)006【摘要】在实践经验的基础上分析了JavaNIO的特性,采用事件驱动、非阻塞的IO多路复用、多线程、安全Cookies、SSL、高速缓存等多种技术,设计并实现了…...

云南昆明网站建设公司/长沙正规seo优化价格

前面我们讲了半导体&#xff0c;那么我们今天讲的是二极管里面比较重要的一个组成二极管。二极管又叫晶体二极管&#xff0c;简称二极管&#xff0c;是诞生最早的半导体器件之一&#xff0c;二极管的用途非常广泛&#xff0c;几乎所有的电子电路中都能用到它。那么我们下面来看…...

惠州百度网络推广/网站推广优化c重庆

我们上一篇文章产品经理学SQL&#xff08;四&#xff09;说到了数据库定义语言&#xff0c;它们包含数据库的相关操作&#xff08;创建数据库、删除数据库、数据库的命名规范&#xff09;和数据表的相关操作&#xff08;创建数据表、删除数据表、数据表的命名规范&#xff09;&…...