自动化测试 selenium+Junit 总结知识

文章目录

  • Selenium 自动化测试
    • 什么是selenium?selenium的原理是什么?
    • Selenium 自动化测试的流程是什么?
        • Selnium还有一些其他的操作
    • Selenium 如何定位动态元素?
  • Junit 测试框架
    • 注解
    • 断言
    • 执行顺序
    • 测试套件
    • 参数化
        • 单参数
        • 多参数
        • 动态参数

Selenium 自动化测试

什么是selenium?selenium的原理是什么?

手工测试、人工测试,随着功能的增加,版本的不多更新,仍然需要对旧功能进行测试,自动化测试就需要对一部分手工测试进行替代,提高效率,selenium就是一个web UI自动化测试工具。

浏览器驱动 WebDriver + Selenium 脚本 + 浏览器 可以实现对网页的完整自动化测试

selenium的原理

在这里插入图片描述

Selenium 自动化测试的流程是什么?

1)使用Java ,在maven 引入 selenium 依赖,同时配置好 WebDriver 浏览器驱动的环境

2) selenium 定位元素

​ css选择器 driver.findElement(By.cssSelector())

​ xpath driver.findElement(By.XPath())

  1. 定位元素后对元素进行操作,click、sendKeys、 clear、submit、getText、getAttribute

注意点:在selenium获取元素的时候,可能会因为代码执行的太快,页面还没有渲染完,导致元素还没有加载好,最终获取元素异常,获取不到。

那么selenuim使用几种等待的方式,来保证一定能获取到元素

1)强制等待

Thread.sleep(), 让当前线程进入到睡眠状态,程序停下来,等待页面渲染好,但是这个时间我们不能把握,会造成时间上的浪费,比如说一个用例停1s,一百个用例就停100s,极大的浪费时间

2)隐式等待

driver.manage().timouts().implicityWait(Duration)

在规定的时间内,轮询等待元素,一但出现立刻结束,节省了很多时间。隐式等待的作用域是WebDriver的整个生命周期中,所有的定位元素都要进行轮询,直到quit释放驱动。

3)显式等待

可以针对某一个元素进行等待,极大的节省时间,缺点就是写法较为复杂

1、创建一个WebDriverWait(驱动对象,等待时间)

2、调用util方法,参数是ExpectedConditions 类,可以指定某个元素满足某个条件结束等待,否则时间到了抛出异常

Selnium还有一些其他的操作

1)跳转页面

2)前进后退

3)系统的警告弹窗、输入弹窗

4)模拟鼠标键盘

5)选择下拉框

6)文件上传

7)屏幕截图

Selenium 如何定位动态元素?

1、如果id是动态的,定位时那就不要用id定位。用其他方式定位

2、还有一种情况就是这个元素一会在页面上方,一会在下方,飘忽不定的动态元素,
那就根据元素属性定位(元素的 tag、name的属性是不会变的,动的只是 class 属性和 styles 属性

Junit 测试框架

注解

@Test 标在一个方法上面,表示一个测试用例

@BeforeEach , 每一个用例执行前都会执行一遍

@BeforeAll 静态表示 , 所有的用例执行之前只执行一次

@AfterEach , 每一个用例执行后都会执行一遍

@AfterAll 静态表示 ,所有的用例执行之后只执行一次

断言

assertEquals(expect,actual) 判断预期的文本是否与实际文本一直,返回值是true、false

assertNotEquals

assertTrue 里面方式的是表达式,参数是boolean类型的

assertFalse

assertNull 判断是否是null,返回值是true、false

assertNotNull

执行顺序

Junit的默认执行顺序是不确定的,官方文档没有明确,我们可以用junit中的注解来设置测试用例的执行顺序

@Order(1) 执行顺序根据标注的数字,从小到大一次执行用例

测试套件

@TestCase

@SelectPackages 执行包中的所有测试用例

@TestCase

@SelectClass 执行类中的所有测试用例

参数化

单参数

@ParameterizedTest

@ValueSource(ints = {1,2,3,4,})

多参数

@CsvSource(value={“1,2,4”,“2,3,4”})

或者

@CsvFileSource ( value = “”) 导入 csv excel表格形式的文件

动态参数

@MethodSource(“”)参数是数据来源的方法名,如果不指定数据来源,默认找同名的静态方法

使用Stream流的方式来进行接收和传递

@ParameterizedTest
@MethodSource("methodDemo")
void autoDemo(){System.out.println(x);
}// 单个动态参数传递
static Stream<String> methodDemo(){return Stream.of("zhansgan","lisi","wangwu");
}// 多个动态参数传递
statci String<Argements> methodDemo1(){}return Stream.of(Arguments.arguments("lisi","20"),Arguments.arguments("wawang","18"),Arguments.arguments("chenli","11"))
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS-Dom转为图片,并放入pdf中进行下载

1、将dom转换为图片 这里我们使用html2canvas工具插件先将dom转为canvas元素然后canvas拥有一个方法可以将绘制出来的图形转为url然后下载即可注意&#xff1a;如果元素使用了渐变背景并透明的话&#xff0c;生成的图片可能会有点问题。我下面这个案例使用了渐变背景实现元素对…

前端自动化测试入门教程

&#x1fab4; 背景 前端的自动化测试主要可以分为以下四种&#xff1a; 单元测试&#xff08;Unit Test&#xff09;&#xff1a;对一个函数/组件进行测试&#xff0c;一般用于公共函数/公共组件的测试维护。常用框架有 Jest、Jasmine、Mocha等&#xff1b; 集成测试&#x…

JMeter数据库性能测试指南:全面掌握基础操作

1.网络请求时间 2.数据库查询的时间 数据库性能指标 TPS:每秒事务数&#xff08;一秒钟服务器处理的事务数&#xff0c;事务指&#xff0c;请求出去到响应回来的整个过程的时间&#xff09; QPS:每秒查询量&#xff08;就是数据库每秒执行的SQL数量&#xff0c;包含insert/…

intel深度相机 D455及D4系列入门教程(逐行代码讲解)

1.介绍 Intel RealSense D435、D455等D4系列&#xff1a; Intel D4系列深度相机是由英特尔&#xff08;Intel&#xff09;公司推出的一款深度感知摄像头&#xff0c;专为实现计算机视觉和深度学习应用而设计。这款相机使用了英特尔的深度感知技术&#xff0c;结合了摄像头和红…

vue3+elementPlus el-input的type=“number“时去除右边的上下箭头

改成 代码如下 <script lang"ts" setup> import {ref} from vue const inputBtn ref() </script> <template><el-input type"number" v-model"inputBtn" style"width: 80px;" class"no_number">…

WPS/word 表格跨行如何续表、和表的名称

1&#xff1a;具体操作&#xff1a; 将光标定位在跨页部分的第一行任意位置&#xff0c;按下快捷键ctrlshiftenter&#xff0c;就可以在跨页的表格上方插入空行&#xff08;在空行可以写&#xff0c;表1-3 xxxx&#xff08;续&#xff09;&#xff09; 在空行中输入…

毛玻璃 has 选择器卡片悬停效果

效果展示 页面结构 从上述的效果展示可以看到&#xff0c;页面是由多个卡片组成&#xff0c;并且鼠标悬停在卡片上时&#xff0c;会旋转用户图片并且韩式对应的用户信息框。 CSS3 知识点 :has 属性的运用 实现页面整体结构 <div class"container"><div…

RT-Thread 内存管理(学习二)

内存堆管理应用示例 这是一个内存堆的应用示例&#xff0c;这个程序会创建一个动态的线程&#xff0c;这个线程会动态申请内存并释放&#xff0c;每次申请更大的内存&#xff0c;当申请不到的时候就结束。 #include <rtthread.h>#define THREAD_PRIORITY 25 #defi…

conda安装使用jupyterlab注意事项

文章目录 一、conda安装1.1 conda安装1.2 常见命令1.3 常见问题 二、jupyterlab2.1 jupyterlab安装和卸载2.2 常见错误2.2.1 版本冲突&#xff0c;jupyterlab无法启动2.2.2 插件版本冲突 2.3 常用插件2.3.1 debugger2.3.2 jupyterlab_code_formatter 2.4 jupyter技巧 一、conda…

Docker数据管理

容器中管理数据主要有两种方式&#xff1a; 数据卷&#xff08;Data Volumes&#xff09; 数据卷容器&#xff08;Data Volume Dontainers&#xff09; Docker的数据管理 数据卷 数据卷是一个供容器使用的特殊目录&#xff0c;位于容器中。可将宿主机的目录挂载到数据卷上&…

云服务器CVM_云主机_云计算服务器_弹性云服务器-腾讯云

腾讯云服务器CVM提供安全可靠的弹性计算服务&#xff0c;腾讯云明星级云服务器&#xff0c;弹性计算实时扩展或缩减计算资源&#xff0c;支持包年包月、按量计费和竞价实例计费模式&#xff0c;CVM提供多种CPU、内存、硬盘和带宽可以灵活调整的实例规格&#xff0c;提供9个9的数…

微服务学习(十一):安装Git

微服务学习&#xff08;十一&#xff09;&#xff1a;安装Git 1、下载Git 官网下载Git 2、将下载后的资源包上传到服务器 3、解压并安装 tar -zxvf git-2.42.0.tar.gz4、安装依赖 yum install zlib yum install zlib-devel5、执行操作命令 cd /home/git/git-2.42.0 ./co…