自动化测试——selenium工具(web自动化测试)

1、自动化测试

优点:通过自动化测试有效减少人力的投入,同时提高了测试的质量和效率。

           也用于回归测试。随着版本越来越多,版本回归的压力越来越大,仅仅通过人工测试             来回归所以的版本肯定是不现实的,所以我们需要借助自动化测试。

2、自动化测试的分类

接口自动化测试

UI自动化测试(界面测试):

                      移动端自动化测试

                      web端自动化测试

3、selenium(web自动化测试工具)

  • 为什么选择selenium作为我们的web自动化测试工具?

答:1)开源免费

        2)支持多浏览器。如:Chrome、Firefox、IE浏览器等等

        3)支持多系统。如:Linux、Windows、MacOS.....

        4)支持多语言。如:Java、Python、CSharp、Ruby、JavaScript、Kotlin

        5)selenium包里提供了很多可供测试使用的API。

4、环境部署

使用selenium实施web自动化测试,需要的环境有:

  • Chrome浏览器
  • 谷歌驱动(ChromeDriver)
  • selenium工具包

一个简单的自动化代码示例:

首先导入selenium包:

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.0.0</version>
        </dependency>

简单自动化百度搜索蔡徐坤代码:

public void caixukunTest() throws InterruptedException {
        //打开浏览器
        ChromeDriver driver = new ChromeDriver();
        Thread.sleep(2000);
        //在浏览器输入百度网址,访问百度网页
        driver.get("https://www.baidu.com");
        Thread.sleep(2000);
        //找到百度首页的输入框元素,输入关键词 蔡徐坤
        driver.findElement(By.cssSelector("#kw")).sendKeys("蔡徐坤");
        Thread.sleep(2000);
        //找到百度首页”百度一下“按钮,并点击
        driver.findElement(By.cssSelector("#su")).click();
        Thread.sleep(2000);
        //结束会话(关闭浏览器)
        driver.quit();
    }

简单自动化实例的五个主要步骤:

  • 创建驱动实例,创建会话
  • 访问网站
  • 查找元素
  • 操作元素
  • 结束会话

5、selenium常用方法

5.1 查找页面元素

findElement()

参数:By类(提供什么方式来查找元素)

返回值:webElement

findElements()

参数:By类(提供什么方式来查找元素)

返回值:List<WebElement>

5.2 元素的定位 By类

selector:基础选择器/复合选择器

功能:选中页面中指定的标签元素

xpath

语法:

  • 层级:/子级 // 跳级
  • 属性:@
  • 函数:contains()......

自动化里要求元素的定位必须唯一。但是在手动复制selector或者xpath元素的时候不一定是唯一的,需要我们手动修改到唯一的。

5.3 输入文本、点击、提交

sendKeys();

仅适用于文本字段和内容可编辑的元素;

click();

submit();

selenium官方不推荐使用submit,更推荐使用click,仅适用于表单元素。

 

5.4 清除

clear();

用于频繁测试输入是否可以重复输入。

5.5 获取文本、获取属性对应的值(注意区分)、获取页面的标题和URL

获取文本:getText()

获取属性对应的值:getAttribute()

获取页面的标题和URL:

6、窗口

6.1 窗口的大小设置:最大化、最小化、全屏窗口、手动设置窗口大小

6.2 窗口的切换

当浏览器每次打开一个标签页的时候,会自动的给每个标签页进行标识(句柄)。

6.3 屏幕截图

保存屏幕截图所用到的包:

<dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>

实例代码:

//屏幕截图,保存现场
        File srcfile = driver.getScreenshotAs(OutputType.FILE);
        //把屏幕截图放到指定的路径下
        String filename = "my.png";
        FileUtils.copyFile(srcfile,new File(filename));

注意:

  • 当代码执行到查找结果页的元素的时候,页面还没有完全加载,此时需要添加等待机制,让其渲染完成。
  • 当图片文件名为固定格式的时候,多次执行程序会造成生成的图片被覆盖,可以将图片文件的命名添加动态数据(时间戳)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

备战蓝桥杯--数据结构及STL应用(基础)

今天轻松一点&#xff0c;讲一讲stl的基本操作吧&#xff01; 首先&#xff0c;让我们一起创建一个vector容器吧&#xff01; #include<bits/stdc.h> using namespace std; struct cocoack{ int coco,ck; } void solve(){vector<cocoack> x;for(int i0;i<5;i){…

springboot3+vue3支付宝在线支付案例-渲染产品列表页面

springboot3vue3支付宝在线支付案例-渲染产品列表页面&#xff01;今天折腾了半天&#xff0c;完成了vue3前端项目的产品列表选染。 我们使用到了技术有axios&#xff08;发送跨域的请求获取产品&#xff09;。pinia&#xff08;绑定数据&#xff09;, import { ref } from vu…

203.移除链表元素(力扣LeetCode)

文章目录 203.移除链表元素题目描述原链表删除元素虚拟头节点 203.移除链表元素 题目描述 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head …

redis-4 集群

应用场景 为什么需要redis集群&#xff1f; 当主备复制场景&#xff0c;无法满足主机的单点故障时&#xff0c;需要引入集群配置。 一般数据库要处理的读请求远大于写请求 &#xff0c;针对这种情况&#xff0c;我们优化数据库可以采用读写分离的策略。我们可以部 署一台主服…

网安文件包含漏洞

文件包含概念&#xff1a; 开发人员通常会把可重复使用的函数写到单个文件中&#xff0c;在使用某些函数时&#xff0c;直接调用此文件&#xff0c;而无需再次编写&#xff0c;这种调用文件的过程一般被称为包含。为了使代码更加灵活&#xff0c;通常会将被包含的文件设置为变…

【C/C++ 01】初级排序算法

排序算法通常是针对数组或链表进行排序&#xff0c;在C语言中&#xff0c;需要手写排序算法完成对数据的排序&#xff0c;排序规则通常为升序或降序&#xff08;本文默认为升序&#xff09;&#xff0c;在C中&#xff0c;<algorithm>头文件中已经封装了基于快排算法的 st…

Python采集学习笔记-读取excel数据

表格格式 方法一:使用xlrd import xlrd 1.读取Excel文件 workbook xlrd.open_workbook(plc.xlsx) 2.读取第一个表 sheet workbook.sheet_by_index(0) 3.获取表格总行数 total_rows sheet.nrows 4.创建列表,存储表格一行中每一列信息 plc_info [] for row in range(1…

【Linux】System V 共享内存

文章目录 一、System V共享内存的原理共享内存的内核数据结构 二、共享内存的使用1. 创建shmget()系统调用创建shm在命令行中查询共享内存 2. 释放使用命令释放共享内存资源使用shmctl释放共享内存资源 3. 关联4. 去关联 三、用共享内存实现server&client通信 一、System V…

【架构】Docker实现集群主从缩容【案例4/4】

实现集群主从缩容【4/4】 接上一节&#xff0c;在当前机器为4主4从的架构上&#xff0c;减缩容量为3主3从架构。即实现删除6387和6388. 示意图如下&#xff1a; 第一步&#xff1a;查看集群情况&#xff08;第一次&#xff09; redis-cli --cluster check 127.0.0.1:6387roo…

负载均衡技术助力企业数字化转型和高可用架构实现

文章目录 什么是高可用架构什么是负载均衡负载均衡设备硬件负载均衡的代表产品软件负载均衡的代表产品 负载均衡基于OSI模型分层负载均衡在网络层负载均衡在传输层负载均衡在应用层 优先考虑负载均衡的场景硬件负载均衡的缺点云负载均衡正在成为最佳选择企业数字化转型对负载均…

Spring-boot项目+Rancher6.3部署+Nacos配置中心+Rureka注册中心+Harbor镜像仓库+NFS存储

目录 一、项目概述二、环境三、部署流程3.1 Harbor部署3.1.1 docker安装3.1.2 docker-compose安装3.1.3 安装证书3.1.4 Harbor下载配置安装 3.2 NFS存储搭建3.3 Rancher平台配置3.3.1 NFS存储相关配置3.3.2 Harbor相关配置3.3.3 Nacos部署及相关配置3.3.4 工作负载deployment配…

石油化工设备状态监测与健康管理

在石油化工行业&#xff0c;设备长时间稳定运行至关重要&#xff0c;而PreMaint作为智能监测与健康管理领域的领军者&#xff0c;正在为该行业设备状态的实时监测、健康管理以及智能诊断提供全新的解决方案。 一、状态监测的必要性 石化行业设备的特殊性质要求对其状态进行持续…

如何在 Mac 中运行 Office 办公软件

虽然 Office 软件也有 Mac 版本的&#xff0c;但是有蛮多小伙伴用起来还是感觉不得劲&#xff0c;毕竟接触了太久的 Windows&#xff0c;所以想要使用 Windows 版本的 Office 软件。 今天就给大家介绍一下怎么在 Mac 电脑中运行 Windows 版本的办公软件&#xff0c;在这里就需…

【EEG信号处理】ERP相关

ERP&#xff0c;全称为event-related potential&#xff0c;中文是事件相关电位。 首先要明确的一点是&#xff0c;ERP是根据脑电图EEG得到的&#xff0c;他是EEG的一部分&#xff0c;是最常用的时域分析方法 可能有一部分是介绍不到的&#xff0c;望谅解 在维基百科中给的定义…

手机屏幕生产厂污废水处理需要哪些工艺设备

随着手机行业的快速发展&#xff0c;手机屏幕生产厂的规模也越来越大&#xff0c;但同时也带来了大量的污废水排放问题。为了保护环境和人类的健康&#xff0c;手机屏幕生产厂需要采取适当的工艺设备来处理污废水。本文将介绍手机屏幕生产厂污废水处理所需的工艺设备。 首先&am…

Spring:JDBCTemplate 的源码分析

一&#xff1a;JdbcTemplate的简介 JdbcTemplate 是 Spring Template设置模式中的一员。类似的还有 TransactionTemplate、 MongoTemplate 等。通过 JdbcTemplate 我们可以使得 Spring 访问数据库的过程简单化。 二&#xff1a;执行SQL语句的方法 1&#xff1a;在JdbcTempla…

提升编程效率的利器: 解析Google Guava库之集合篇RangeSet范围集合(五)

在编程中&#xff0c;我们经常需要处理各种范围集合&#xff0c;例如时间范围、数字范围等。传统的集合类库往往只能处理离散的元素集合&#xff0c;对于范围集合的处理则显得力不从心。为了解决这个问题&#xff0c;Google的Guava库提供了一种强大的数据结构——RangeSet&…

一文掌握 Golang 加密:crypto/cipher 标准库全面指南

一文掌握 Golang 加密&#xff1a;crypto/cipher 标准库全面指南 引言Golang 和加密简介crypto/cipher 库概览使用 crypto/cipher 实现加密高级功能和技巧最佳实践和性能优化总结资源推荐 引言 在现代软件开发领域&#xff0c;安全性是一个不容忽视的重要议题。随着信息技术的…

黑盒测试用例的具体设计方法(7种)

7种常见的黑盒测设用例设计方法&#xff0c;分别是等价类、边界值、错误猜测法、场景设计法、因果图、判定表、正交排列。 &#xff08;一&#xff09;等价类 1.概念 依据需求将输入&#xff08;特殊情况下会考虑输出&#xff09;划分为若干个等价类&#xff0c;从等价类中选…

备战蓝桥杯---数据结构与STL应用(基础实战篇1)

话不多说&#xff0c;直接上题&#xff1a; 当然我们可以用队列&#xff0c;但是其插入复杂度为N,总的复杂度为n^2,肯定会超时&#xff0c;于是我们可以用链表来写&#xff0c;同时把其存在数组中&#xff0c;这样节点的访问复杂度也为o(1).下面是AC代码&#xff1a; 下面我们来…