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

news2024/11/23 20:40:11

文章目录

  • 一. 什么是自动化测试
  • 二. 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.coloradmin.cn/o/1057422.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++(List)

本节目标&#xff1a; 1.list介绍及使用 2.list深度剖析及模拟实现 3.list和vector对比 1.list介绍及使用 1.1list介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 2. list的底层是双向链表结构&#xff0c;…

[React] react-redux基本使用

文章目录 1.redux2.安装redux3.操作redux3.1 创建最为核心的store3.2 创建为store工作的reducer3.3 redux的响应式处理 4.完整版redux4.1 完善actionCreators4.2 thunk中间件 5.react-redux5.1 Count容器组件5.2 connect函数5.3 Provider 1.redux redux原理图 actionCreators:…

司空见惯 - 奈尔宝的NTTP

联合国对21世纪人才定义的标准&#xff0c;包括六种核心技能&#xff0c;即批判性思维&#xff08;critical thinking)、人际交往&#xff08;communication)、与人合作&#xff08;collaboration)、创造性&#xff08;creativity)、信息素养&#xff08;information literacy)…

【中国知名企业高管团队】系列25:360

今天华研荟的“走进中国知名企业高管团队系列”带大家走进360——这是少数以数字作为产品名称的公司&#xff0c;如果您在网上看到有人说“数字公司”&#xff0c;那么大概率指的就是360公司。 360公司正式的名称是三六零安全科技股份有限公司&#xff0c;可以说是中国覆盖面最…

数据结构: 数组与链表

目录 1 数组 1.1 数组常用操作 1. 初始化数组 2. 访问元素 3. 插入元素 4. 删除元素 5. 遍历数组 6. 查找元素 7. 扩容数组 1.2 数组优点与局限性 1.3 数组典型应用 2 链表 2.1 链表常用操作 1. 初始化链表 2. 插入节点 3. 删除…

正确完成实时 AI

发表于 构建真实世界的实时 AI 一、说明 我们知道&#xff0c;当前的AI进展是扎根于历史数据&#xff0c;这就造成一个事实&#xff0c;模型总是赶不上实时进展&#xff0c;模型的洞察力不够尖锐&#xff0c;或者&#xff0c;时间损失等&#xff0c;本篇对这一系列AI的短板展开…

【初识Linux】:常见指令(1)

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux的基础知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数…

WebSocket基础——WebSocket的基本概念 VS Http SpringBoot整合WebSocket vue前端代码和效果展示

前言 WebSocket是一种在Web浏览器和服务器之间进行全双工通信的协议。它允许在单个TCP连接上进行双向通信&#xff0c;而不需要通过多个HTTP请求-响应循环来实现。相比传统的HTTP请求&#xff0c;WebSocket提供了更低的延迟和更高的实时性。 本篇博客介绍WebSocket的基本概念…

计算机网络(四):网络层

参考引用 计算机网络微课堂-湖科大教书匠计算机网络&#xff08;第7版&#xff09;-谢希仁 1. 网络层概述 网络层的主要任务是实现网络互连&#xff0c;进而实现数据包在各网络之间的传输 要实现网络层任务&#xff0c;需要解决以下主要问题 网络层向运输层提供怎样的服务 (“…

基于SpringBoot的养老监护管理平台设计与实现(源码+lw+部署文档+讲解等)

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

解决Invalid bound statement (not found)错误~

报错如下所示&#xff1a; 找了好久&#xff0c;刚开始以为是名称哪里写的有问题&#xff0c;但仔细检查了好多遍都不是 最后发现了问题如下所示&#xff1a; UserMapper里面的内容被我修改了&#xff0c;但classes中的内容还是原来的内容&#xff0c;所以才导致了编译器报错n…

Vue2详解

Vue2 一、Vue快速上手 1.1什么是Vue 概念&#xff1a;Vue是一套构建用户界面的渐进式 框架 构建用户界面&#xff1a;基于数据渲染出用户可以看到的界面 渐进式&#xff1a;所谓渐进式就是循序渐进&#xff0c;不一定非得把Vue中所有的API都学完才能开发Vue&#xff0c;可以…

【数据结构】红黑树(C++实现)

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;数据结构 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【数据…

一篇博客学会系列(3) —— 对动态内存管理的深度讲解以及经典笔试题的深度解析

目录 动态内存管理 1、为什么存在动态内存管理 2、动态内存函数的介绍 2.1、malloc和free 2.2、calloc 2.3、realloc 3、常见的动态内存错误 3.1、对NULL指针的解引用操作 3.2、对动态开辟空间的越界访问 3.3、对非动态开辟内存使用free释放 3.4、使用free释放一块动态…

接口测试入门实践

简单接口搭建(表单/REST) 五步教会你写接口 首先要安装flask包: pip install flask 从flask中导入Flask类和request对象: from flask import Flask, request从当前模块实例化出一个Flask实例:appFlask(__name__)编写一个函数来处理请求 从请求对象中获取数据:arequest.values.…

【test】文章测试

自定义文章测试 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚注…

【改进哈里鹰算法(NCHHO)】使用混沌和非线性控制参数来提高哈里鹰算法的优化性能,解决车联网相关的路由问题(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

嵌入式学习笔记(42)SD卡的编程接口

8.3.1 SD卡的物理接口 SD卡由9个针脚与外界进行物理连接&#xff0c;这9个脚中有2个地&#xff0c;1个电源&#xff0c;6个信号线。 8.3.2 SD协议与SPI协议 (1)SD卡与SRAM/DDR/SROM之类的东西的不同&#xff1a;SRAM/DDR/SROM之类的存储芯片是总线式的&#xff0c;只要连接上…

Docker部署Nginx-常用命令

1.拉取 docker pull nginx 2. 查看镜像 docker images 3.保存镜像 docker save -o nginx.tar nginx:latest 4.删除镜像 docker rmi nginx:latest 5. 加载镜像 docker load -i nginx.tar 6. 运行Nginx docker run -d --name nginx -p 80:80 nginx 7.停掉Nginx容器 docker stop n…

Android 活动Activity

目录 一、启停活动页面1.1 Activity的启动和结束1.2 Activity的生命周期1.3 Activity的启动模式 二、在活动之间传递消息2.1 显式Intent和隐式Intent2.2 向下一个Activity发送数据2.3 向上一个Activity返回数据 三、补充附加信息3.1 利用资源文件配置字符串3.2 利用元数据传递配…