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

【软件测试】自动化测试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");}

相关文章:

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

文章目录 一. 什么是自动化测试二. Selenium的介绍1. Selenium是什么2. Selenium的特点3. Selenium的工作原理4. SeleniumJava的环境搭建 一. 什么是自动化测试 自动化测试是指使用软件工具或脚本来执行测试任务的过程&#xff0c;以替代人工进行重复性、繁琐或耗时的测试活动…...

Nginx实现动静分离

一、概述 1、什么是动静分离 动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来&#xff0c;动静资源做好了拆分以后&#xff0c;我们就可以根据静态资源的特点将其做缓存操作&#xff0c;这就是网站静态化处理的核心思路。 动静分离简单的概…...

【算法题】309. 买卖股票的最佳时机含冷冻期

题目&#xff1a; 给定一个整数数组prices&#xff0c;其中第 prices[i] 表示第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下&#xff0c;你可以尽可能地完成更多的交易&#xff08;多次买卖一支股票&#xff09;: 卖出股票后&#xff0c;你无法在…...

1951-2011年长序列高时空分辨率月尺度温度和降水数据集

简介 长序列高时空分辨率月尺度温度和降水数据集&#xff0c;基于中国及周边国家共1153个气温站点和1202个降水站点数据&#xff0c;利用ANUSPLIN软件插值&#xff0c;重建了1951−2011年中国月值气温和降水量的高空间分辨率0.025&#xff08;~2.5km&#xff09;格点数据集&am…...

十天学完基础数据结构-第六天(树(Tree))

树的基本概念 树是一种层次性的数据结构&#xff0c;它由节点组成&#xff0c;这些节点按照层次关系相互连接。树具有以下基本概念&#xff1a; 根节点&#xff1a;树的顶部节点&#xff0c;没有父节点。 子节点&#xff1a;树中每个节点可以有零个或多个子节点。 叶节点&am…...

RobotFramework流程控制(最新版本)

文章目录 一 分支流程1. 关键字&#xff1a;Run Keyword If2. 关键字&#xff1a;IF/ELSE3. 嵌套IF/ELSE4. 关键字&#xff1a;Set Variable If 二 循环流程1. 普通FOR循环2. 嵌套FOR循环3. 退出循环4. 其它常用循环 一 分支流程 1. 关键字&#xff1a;Run Keyword If Run Key…...

win11 好用的 快捷方式 --chatGPT

gpt: Windows 11引入了许多新的功能和改进&#xff0c;同时也包括一些实用的快捷方式和功能。以下是一些Windows 11中的常用快捷方式&#xff1a; 1. **Win D**&#xff1a;最小化或还原所有打开的窗口&#xff0c;显示桌面。 2. **Win E**&#xff1a;打开文件资源管理器…...

在大数据相关技术中,HBase是个分布的、面向列的开源数据库,是一个适合于非结构化数据存储的数据库。

HDFS&#xff0c;适合运行在通用硬件上的分布式文件系统&#xff0c;是一个高度容错性的系统&#xff0c;适合部署在廉价的机器上。Hbase&#xff0c;是一个分布式的、面向列的开源数据库&#xff0c;适合于非结构化数据存储。MapReduce&#xff0c;一种编程模型&#xff0c;方…...

910数据结构(2020年真题)

算法设计题 问题1 现有两个单链表A和B&#xff0c;其中的元素递增有序&#xff0c;在不破坏原链表的情况下&#xff0c;请设计一个算法&#xff0c;求这两个链表的交集&#xff0c;并将结果存放在链表C中。 (1)描述算法的基本设计思想&#xff1b; (2)根据设计思想&#xff0…...

MyBatisPlus(八)范围查询

说明 范围查询&#xff0c;包括&#xff1a; 大于大于等于小于小于等于在范围内在范围外 大于&#xff1a;gt 代码 Testvoid gt() {LambdaQueryWrapper<User> wrapper new LambdaQueryWrapper<>();wrapper.gt(User::getAge, 20);List<User> users mapp…...

【day10.04】QT实现TCP服务器客户端搭建的代码

服务器&#xff1a; #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//实例化一个服务器server new QTcpServer(this);//此时&#xff0c;服务器已经成功进入…...

milvus 结合Thowee 文本转向量 ,新建表,存储,搜索,删除

1.向量数据库科普 【上集】向量数据库技术鉴赏 【下集】向量数据库技术鉴赏 milvus连接 from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection, utility connections.connect(host124.****, port19530)2.milvus Thowee 文本转向量 使用 …...

GEO生信数据挖掘(三)芯片探针ID与基因名映射处理

检索到目标数据集后&#xff0c;开始数据挖掘&#xff0c;本文以阿尔兹海默症数据集GSE1297为例 目录 处理一个探针对应多个基因 1.删除该行 2.保留分割符号前面的第一个基因 处理多个探针对应一个基因 详细代码案例一删除法 详细代码案例二 多个基因名时保留第一个基因名…...

力扣 -- 96. 不同的二叉搜索树

解题步骤&#xff1a; 参考代码&#xff1a; class Solution { public:int numTrees(int n) {vector<int> dp(n1);//初始化dp[0]1;//填表for(int i1;i<n;i){for(int j1;j<i;j){//状态转移方程dp[i](dp[j-1]*dp[i-j]);}}//返回值return dp[n];} }; 你学会了吗&…...

经典算法-枚举法(百钱买百鸡问题)

题目&#xff1a; 条件&#xff1a;现有 100 元&#xff0c;一共要买公鸡、母鸡、小鸡三种鸡&#xff0c;已知公鸡 5 元一只&#xff0c;母鸡 3 元一只&#xff0c;1 元可以买三只小鸡。 要求&#xff1a;公鸡、母鸡、小鸡都要有&#xff0c;一共买 100 只鸡。有哪几种买法&am…...

Gurobi设置初始可行解

目录 1. 决策变量的Start属性直接设置变量的初始值 1.1 Start&#xff1a;MIP变量的起始值&#xff08;初值&#xff09;double类型&#xff0c;可更改 1.2 StartNodeLimit&#xff1a;限制了在完善一组输入部分变量的初始解时&#xff0c;MIP所探索的分支定界的节点的数量 …...

Zabbix配置监控文件系统可用空间小于30GB自动告警

一、创建监控项 二、配置监控项 #输入名称–>键值点击选择 #找到磁盘容量点击 注&#xff1a; 1、vfs 该键值用于检测磁盘剩余空间&#xff0c;zabbix 内置了非常多的键值可以选着使用 2、单位B不需要修改&#xff0c;后期图表中单位和G拼接起来就是GB 3、更新时间 10S…...

进程调度算法之先来先服务(FCFS),短作业优先(SJF)以及高响应比优先(HRRN)

1.先来先服务&#xff08;FCFS&#xff09; first come first service 1.算法思想 主要从“公平”的角度考虑(类似于我们生活中排队买东西的例子) 2.算法规则 按照作业/进程到达的先后顺序进行服务。 3.用于作业/进程调度 用于作业调度时&#xff0c;考虑的是哪个作业先…...

MyBatisPlus(九)模糊查询

说明 模糊查询&#xff0c;对应SQL语句中的 like 语句&#xff0c;模糊匹配“要查询的内容”。 like /*** 查询用户列表&#xff0c; 查询条件&#xff1a;姓名包含 "J"*/Testvoid like() {String name "J";LambdaQueryWrapper<User> wrapper ne…...

Spring 原理

它是一个全面的、企业应用开发一站式的解决方案&#xff0c;贯穿表现层、业务层、持久层。但是 Spring仍然可以和其他的框架无缝整合。 1 Spring 特点 轻量级控制反转面向切面容器框架集合 2 Spring 核心组件 3 Spring 常用模块 4 Spring 主要包 5 Spring 常用注解 bean…...

基于微信小程序的明星应援小程序设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…...

try catch 中的finally什么时候运行

try catch 中的finally什么时候运行 在Java、C#等编程语言中&#xff0c;try-catch-finally语句块用于处理异常。finally块的执行时机通常是在try块中的代码执行完毕之后&#xff0c;无论try块中的代码是否引发了异常。 具体执行顺序如下&#xff1a; 1、try块中的代码首先被…...

力扣 -- 322. 零钱兑换(完全背包问题)

参考代码&#xff1a; 未优化代码&#xff1a; class Solution { public:int coinChange(vector<int>& coins, int amount) {int n coins.size();const int INF 0x3f3f3f3f;//多开一行&#xff0c;多开一列vector<vector<int>> dp(n 1, vector<i…...

[python]pip安装requiements.txt跳过错误包继续安装

在linux上可以用下面操作进行 while read requirement; do sudo pip install $requirement; done < requirement.txt 在windows上写个脚本 import sys from pip._internal import main as pip_maindef install(package):pip_main([--default-timeout1000,install,-U, pac…...

1.5 计算机网络的类别

思维导图&#xff1a; 1.5.1 计算机网络的定义 我的笔记&#xff1a; #### 精确定义&#xff1a; 计算机网络没有统一的精确定义&#xff0c;但一种较为接近的定义是&#xff1a;计算机网络主要由一些通用的、可编程的硬件互连而成&#xff0c;这些硬件并非专门用来实现某一特…...

Go 基本数据类型和 string 类型介绍

Go 基础之基本数据类型 文章目录 Go 基础之基本数据类型一、整型1.1 平台无关整型1.1.1 基本概念1.1.2 分类有符号整型&#xff08;int8~int64&#xff09;无符号整型&#xff08;uint8~uint64&#xff09; 1.2 平台相关整型1.2.1 基本概念1.2.2 注意点1.2.3 获取三个类型在目标…...

Python中print()打印如何不换行?

文章目录 Python中print()打印如何不换行python2.xpython3.x print()函数语法objects基本语法sep基本语法end基本语法 Python中print()打印如何不换行 print() 函数用于打印输出&#xff0c;是python中最常见的一个内置函数。 如何在Python中打印两个或多个变量、语句时而不进…...

python 学习随笔 4

列表list 将序列前几个进行替换&#xff08;数量可以不同&#xff09; 将序列进行间隔替换&#xff08;必须保证数量相同&#xff0c;否则报错&#xff09; 删除序列内元素 向序列后新增一个元素 向序列后新增多个元素 将序列进行数乘&#xff08;不是产生几个序列哦&#xff0…...

【网络安全-信息收集】网络安全之信息收集和信息收集工具讲解

一&#xff0c;域名信息收集 1-1 域名信息查询 可以用一些在线网站进行收集&#xff0c;比如站长之家 域名Whois查询 - 站长之家站长之家-站长工具提供whois查询工具&#xff0c;汉化版的域名whois查询工具。https://whois.chinaz.com/ 可以查看一下有没有有用的信息&#xf…...

设计模式12、代理模式 Proxy

解释说明&#xff1a;代理模式&#xff08;Proxy Pattern&#xff09;为其他对象提供了一种代理&#xff0c;以控制对这个对象的访问。在某些情况下&#xff0c;一个对象不适合或者不能直接引用另一个对象&#xff0c;而代理对象可以在客户端和目标对象之间起到中介的作用。 抽…...

有没有免费的网站推销产品/app拉新接单平台

2019独角兽企业重金招聘Python工程师标准>>> 要想成为优秀的程序猿&#xff0c;不仅要有一定天分&#xff0c;常与大神交流&#xff0c;自己多加练习才是正确的方法。下面是一些Quora用户推荐的国外网站&#xff0c;与广大程序猿或者希望学习编程的朋友们分享&#…...

python好还是wordpress/google浏览器网页版

JQuery示例&#xff1a;可以编辑的表格编辑个性签名12345645JS文件内容&#xff1a;//在页面装载时&#xff0c;让所有的td都拥有点击事件$(document).ready(function(){//找到所有td节点var tds $("td");//给所有的td节点增加点击事件tds.click(tdclick);});functi…...

wordpress标签页/做一个网站需要什么

layouttitlecsspageTagstags.css{% include tags.html %}...

第一媒体app最新版本/优化落实疫情防控

1.Android 获取、移除 View 的 OnClickListener https://blog.csdn.net/lv_fq/article/details/82314241 https://github.com/lvfaqiang/AndroidTestCode/blob/master/app/src/main/java/com/lvfq/code/view/click/ViewClickActivity.kt...

wordpress 以前文章灯箱/无锡网站建设公司

此文从以下几个方面来整理关于分区表的概念及操作:1.表空间及分区表的概念2.表分区的具体作用3.表分区的优缺点4.表分区的几种类型及操作方法5.对表分区的维护性操作.(1.) 表空间及分区表的概念表空间&#xff1a;是一个或多个数据文件的集合&#xff0c;所有的数据对象都存放在…...

苏州保利时光印象楼盘价格/江苏seo

消息队列 posix API消息队列&#xff08;也叫做报文队列&#xff09;能够克服早期unix通信机制的一些缺点。信号这种通信方式更像\"即时\"的通信方式&#xff0c;它要求接受信号的进程在某个时间范围内对信号做出反应&#xff0c;因此该信号最多在接受信号进程的生命…...