【软件测试】自动化测试selenium(一)

文章目录

  • 一. 什么是自动化测试
  • 二. Selenium的介绍
    • 1. Selenium是什么
    • 2. Selenium的特点
    • 3. Selenium的工作原理
    • 4. Selenium+Java的环境搭建

一. 什么是自动化测试

自动化测试是指使用软件工具或脚本来执行测试任务的过程,以替代人工进行重复性、繁琐或耗时的测试活动。通过编写脚本和使用自动化测试工具,可以自动执行测试用例、验证软件系统的功能和性能,并生成相应的测试结果和报告。

通俗的说,自动化测试就相当于将人工测试手段进行转换,让代码去执行.
在这里插入图片描述
自动化测试包括UI自动化,接口自动化,单元测试自动化.按照这个金字塔模型来进行自动化测试规划,可以产生最佳的自动化测试产出投入比(ROI),可以用较少的投入获取很好地收益.

  1. 单元测试(Unit Testing):它是针对软件系统中最小的可测试单元——模块或函数进行测试的过程。通过编写测试用例,开发人员可以针对每个单元独立地进行测试,以确保其在各种情况下的行为符合预期。单元测试通常使用测试框架来帮助组织和执行测试用例。

  2. 接口自动化测试(API Testing):它是通过模拟和调用软件系统的接口来测试系统的正确性和稳定性。接口可以是应用程序接口(API)、网络接口、数据库接口等。接口自动化测试通常涉及到发送请求并验证响应的过程,可以使用编程语言和测试框架来实现。

  3. UI自动化测试(UI Testing):它是通过模拟用户与图形用户界面(GUI)交互来测试应用程序的正确性和用户体验。UI自动化测试涉及到模拟用户操作、验证页面显示和响应等过程。它可以检查用户界面元素的布局、样式、交互和功能,并确保应用程序在不同环境和设备上运行正常。

二. Selenium的介绍

1. Selenium是什么

Selenium是一个广泛使用的自动化测试工具和框架,用于Web应用程序的自动化测试。它提供了一组API,允许开发人员使用多种编程语言(如Java、C#、Python等)来控制浏览器的行为,模拟用户与网页的交互。通过Selenium,开发人员可以自动化执行各种操作,如点击按钮、填写表单、提交请求、获取网页元素等。它还支持模拟不同的浏览器,并提供了丰富的功能和灵活性,以支持各种测试需求。Selenium被广泛用于功能测试、回归测试和UI测试等领域。

2. Selenium的特点

  1. 跨平台:Selenium支持多种操作系统,包括Windows、Mac和Linux。

  2. 多浏览器支持:Selenium可以与多种浏览器一起使用,如Chrome、Firefox、Safari等。

  3. 多语言支持:Selenium支持多种编程语言,包括Java、Python、C#等。这使得开发人员可以根据自己的偏好选择适合他们的语言来编写测试脚本。

  4. 强大的定位元素能力:Selenium允许通过各种方式定位页面上的元素,如ID、名称、类名、CSS选择器、XPath等。

  5. 支持多种交互方式:Selenium可以模拟用户的键盘输入、鼠标操作以及拖放等行为,从而实现更复杂的交互操作。

  6. 支持并行测试:Selenium支持在多个浏览器实例中同时执行测试,从而提高测试效率。

  7. 丰富的测试报告:Selenium可以生成详细的测试报告,包括测试结果、错误信息、截图等,方便开发人员进行问题排查和分析。

3. Selenium的工作原理

在这里插入图片描述
总结上图,Selenium的工作原理为以下:

  1. 开发人员编写自动化脚本代码(测试代码),使用Selenium提供的API来控制浏览器。
  2. 测试代码通过Web驱动程序(如ChromeDriver、GeckoDriver等)与所选浏览器建立通信。
  3. Web驱动程序将命令发送给浏览器,并接收来自浏览器的响应。
  4. 浏览器执行接收到的命令,例如导航至指定URL、查找和操作页面上的元素等。
  5. 浏览器将执行结果返回给Web驱动程序。
  6. Web驱动程序将结果传递给测试代码,以便进行进一步的处理和验证。

4. Selenium+Java的环境搭建

  1. 下载Google浏览器
    谷歌浏览器下载官网

在这里插入图片描述
2. 查看Chrome浏览器对应的版本号. 在这里插入图片描述
在这里插入图片描述
复制版本号.

  1. 打开下载驱动的网址:
    驱动
    在这里插入图片描述
    在这里插入图片描述

  2. 下载完压缩包后,我们将文件压缩至C:\Program Files\Java\jdk1.8.0_192\bin文件目录下.注意我们之前在下载IDEA时配置的环境变量的问题.
    在这里插入图片描述
    在这里插入图片描述

  3. 打开IDEA创建一个Maven项目
    在这里插入图片描述

  4. 然后在pom.xml文件中添加以下Maven依赖:

<dependencies><!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.141.59</version></dependency>
</dependencies>

在这里插入图片描述
添加后记得reload,第一次加载Maven依赖的时间可能比较久,耐心等待一会即可.

  1. 创建一个Main.class文件
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;public class Main {public static void main(String[] args) {WebDriver webDriver = new ChromeDriver();webDriver.get("https://www.baidu.com");}
}

运行上述代码,得到如下结果:
在这里插入图片描述
在这里插入图片描述
即为完成Selenium的环境搭建.
上述代码的含义:

    public static void main(String[] args) {ChromeOptions options = new ChromeOptions();//允许所有请求options.addArguments("--remote-allow-origins=*");WebDriver webDriver = new ChromeDriver();//打开百度首页webDriver.get("https://www.baidu.com");}

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

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

相关文章

vue中 css scoped原理

Vue中css的逻辑是先放子组件&#xff0c;然后放父组件&#xff0c;所以同样的css类名&#xff0c;子组件会被父组件覆盖 html 如下 子被父覆盖 scoped是通过给组件加hash值&#xff0c;锁定组件。 父子组件均scoped的情况下&#xff0c;子仍会覆盖 还是被覆盖了 如何避免被…

Springboo整合Sentinel

Springboo整合Sentinel 1.启动Sentinel java -jar sentinel-dashboard-1.8.6.jar2.访问localhost:8080到Sentinel管理界面(默认账号和密码都是sentinel) 3.引入依赖(注意版本对应) <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spr…

[Linux] 5.Linux虚拟机和Windows文件共享

一、拖拽 如果安装了VMware Tool可以从Windows直接拖进Linux中共享文件&#xff0c;通过拖拽的方式可以把文件从Linux 传输到Windows 二、 文件共享 需要安装VMware Tool点击添加&#xff0c;选择Windows文件的路径&#xff0c;名称作为Linux访问的路径 cd什么都不加&#xff…

PCB铺铜连接方式

在铺铜前先把栅格吸附关闭铺铜会流畅很多 在嘉立创专业版中&#xff0c;默认铺铜方式是这样 改变铺铜规则为直连 效果如下

leetCode 55.跳跃游戏 贪心算法

给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入…

操作系统--分页存储管理

一、概念介绍 分页存储&#xff1a;一是分内存地址&#xff0c;二是分逻辑地址。 1.分内存地址 将内存空间分为一个个大小相等的分区。比如&#xff0c;每个分区4KB。 每个分区就是一个“页框”&#xff0c;每个页框有个编号&#xff0c;即“页框号”&#xff0c;“页框号”…

字符检测专题第二期:通用、简单、快速,见证AI字符识别的超能力!

随着科技的不断进步&#xff0c;OCR&#xff08;光学字符识别&#xff09;技术在工业应用中扮演着越来越重要的角色。 在实际生产中&#xff0c;OCR技术可在生产流程监控、自动化设备控制、品质控制和物流控制等方面发挥作用&#xff0c;提高生产流水线的产量和质量&#xff0c…

mac系统占用内存太大怎么办?

Mac的内存大小有限&#xff0c;一旦运行软件太多&#xff0c;会导致Mac无法打开软件或者电脑卡顿&#xff0c;那么Mac系统占用内存过大怎么有效清理呢&#xff1f;本期小编就来帮大家看看当系统占用内存太大的时候应该怎么办 mac系统占用内存过大怎么清理 Mac的内存大小决定了…

【LeetCode热题100】--543.二叉树的直径

543.二叉树的直径 给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 首先我们知道一条路径的长度为该路径经过的节…

2024免费的硬盘数据恢复软件有哪些?

在当今信息化的社会&#xff0c;数据成为了人们日常工作和生活的重要组成部分。不幸的是&#xff0c;数据丢失的问题也越来越普遍。硬盘数据恢复软件因此而产生&#xff0c;为那些不幸丢失数据的人们提供了救赎。在本文中&#xff0c;我们将介绍十大硬盘数据恢复软件。 一、Rec…

matplotlib从起点出发(9)_Tutorial_9_cycler

0 需求 绘图时有时需要指定几种颜色&#xff0c;或者线型&#xff0c;我们统称为样式&#xff0c;让绘制出的内容在这些样式中循环配置。这时就需要使用到本文所提到的技巧&#xff0c;即cycler. 1 进入教程 本文是自定义属性循环(cycler)设置的演示&#xff0c;用于控制多线…

格点数据可视化(美国站点的日降雨数据)

获取美国站点的日降雨量的格点数据&#xff0c;并且可视化 导入模块 from datetime import datetime, timedelta from urllib.request import urlopenimport cartopy.crs as ccrs import cartopy.feature as cfeature import matplotlib.colors as mcolors import matplotli…

【面试总结大纲】

面试 springSpring AOP的具体实现核心概念分别指的是什么?基于注解的切面实现主要包括以下几个步骤&#xff1a;两个切面&#xff0c;它们之间的顺序是怎么控制的 springmvc的工作流程设计模式原则Spring 框架中用到了哪些设计模式&#xff1f; spring Spring AOP的具体实现 …

Nginx之Openresty基本使用解读

目录 Openresty基本介绍 Openresty源码编译安装 Openresty基本使用 测试lua脚本 外部分文件导入 关闭缓存&#xff0c;开启热部署 用lua代码获取系统变量 Openresty基本介绍 OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台&#xff0c;其内部集成了大量精良的 Lua…

【MySQL教程】| (1-1) 2023MySQL-8.1.0 安装教程

文章目录 一、安装包下载二、安装配置1、解压安装包2、编写MySQL配置文件3、初始化MySQL数据库3、安装mysql服务并启动4、MySQL服务5、连接MySQL6、修改密码 三、配置环境变量四、防止mysql自启动拖慢开机时间 近日有粉丝问到mysql在win11的安装中遇到一些问题&#xff0c;应粉…

[MAUI程序设计] 用Handler实现自定义跨平台控件

今天来谈一谈MAUI跨平台技术的核心概念——跨平台控件。 无论是MAUI,Xamarin.Forms还是其它的跨平台技术,他们是多个不同平台功能的抽象层,利用通用的方法实现所谓“一次开发,处处运行”。 跨平台框架需要考虑通用方法在各平台的兼容,但由于各原生平台(官方将原生称为本…

RTP/RTCP 协议讲解

文章目录 前言一、RTP 协议1、RTP 协议概述2、RTP 工作机制3、RTP 协议的报文结构4、wireshark 抓取 RTP 报文 二、RTCP 协议1、RTCP 协议概述2、RTCP 工作机制3、RTCP 数据报4、wireshark 抓取 RTCP 报文 三、RTSP 和 RTP 的关系四、易混淆概念1、RTP over UDP 和 RTP over RT…

K8s架构简述

以部署一个nginx服务说明kubernetes系统各个组件调用关系&#xff1a; 一旦kubernetes环境启动之后&#xff0c;master和node都会将自身的信息存储到etcd数据库中 一个nginx服务的安装请求会首先被发送到master节点的apiServer组件 apiServer组件会调用scheduler组件来决定到底…

Linux系统编程系列之线程

一、什么是线程 线程&#xff08;Thread&#xff09;是计算机中的基本执行单元&#xff0c;是操作系统调度的最小单位。线程是进程内的一个独立执行流程&#xff0c;一个进程可以包含多个线程&#xff0c;这些线程共享进程的资源&#xff0c;但每个线程都有自己的独立栈空间以及…

【day11.02】网络编程脑图

大小端存储&#xff1a; ip地址划分&#xff1a;