[软件测试]:什么是自动化测试?selenium+webdriver-manager的安装,实现你的第一个脚本

目录

1. 什么是自动化测试?

回归测试

自动化分类

2. web自动化测试

3. selenium


1. 什么是自动化测试?

通过自动化测试工具,编写脚本,自动执行测试用例,主要用于回归测试,性能测试等重复测试任务

常见面试题

自动化测试能取代人工测试吗?

自动化测试脚本是由测试人员编写的,后续有功能的变更,也需要修改测试脚本,更新测试用例,所以自动化测试不能取代人工

自动化测试可以大幅度降低工作量?

错误

自动化测试还需要人工编写测试脚本,测试人员需要维护自动化测试。测试主要由人工测试为主,自动化测试来辅助测试

回归测试

自动化测试主要用于回归测试。什么是回归测试?

软件有多个版本需要进行功能的整体回归,每增加一个功能,都可能会影响之前的功能,所以新版本和旧版本都需要进行测试,使用自动化测试。

自动化分类

接口自动化测试:直接调用API接口,验证接口的输入输出是否符合预期,关注程序的内部交互和数据传输

前端自动化测试:模拟用户在UI界面上的操作,验证前端页面的功能,又分为web前端自动化和客户端自动化

  • web前端自动化测试:主要针对浏览器的Web程序,测试页面元素,交互功能和兼容性

  • 客户端自动化测试:针对移动端应用,测试安装,启动,界面间交互和设备兼容性

2. web自动化测试

web自动化测试的前提是打开浏览器,通过访问web服务器来对服务器界面进行测试,程序想要打开浏览器就要安装对应的web驱动。

若通过安装驱动的方式来启动浏览器,每次浏览器更新后对应的驱动也要更新,为了解决这个问题,selenium中提供了驱动管理工具 webdriver - manager,有了webdriver - manager无需手动安装浏览器驱动,即使浏览器更新也不会影响自动化的执行

先安装python环境,然后安装webdriver-manager,在控制台中输入这条命令

pip install webdriver-manager 

安装selenium

pip install selenium==4.0.0

3. selenium

我们安装好了webdriver-manager驱动,可以通过脚本打开浏览器,安装了selenium,可以使用selenium编写自动化脚本。

在pyCharm编辑器中,检查python解释器,确定selenium库和webdriver-manager库都安装成功并加载到项目中,然后编写一段简单的selenium脚本

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
​
# 创建谷歌浏览器驱动对象,安装谷歌浏览器驱动
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
#访问百度页面
driver.get("https://www.baidu.com")
#在百度页面的搜索框中搜索 "许嵩" 
driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("许嵩")
#点击百度页面的 "百度一下" 按钮
driver.find_element(By.CSS_SELECTOR, "#su").click()
#休眠30秒
time.sleep(30)
#关闭浏览器
driver.quit()

selenium+web驱动+浏览器的工作原理

image-20250610205143312

  1. 通过selenium编写的自动化脚本代码在ChromeDriverService中创建一个服务

  2. 通过创建好的服务打开webdriver,安装在本地的驱动服务IP为localhost,port为ChromeDriverService中创建的端口号,该服务地址为selenium向webdriver发送请求的服务地址。

  3. 向浏览器驱动程序发送HTTP请求,浏览器驱动程序解析请求,打开浏览器,并获得sessionid,如果再次对浏览器操作需携带次id

  4. 打开浏览器后,所有的selenium的操作(访问地址,查找元素等)均通过创建好的服务连接到webdriver,然后使用excute发送请求

  5. 驱动收到请求并对请求进行解析,转成浏览器能够进行解析的脚本发送给浏览器,浏览器通过请求的内容执行对应动作

  6. 浏览器再把执行的动作结果通过浏览器驱动程序返回给测试脚本

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

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

相关文章

使用OpenCV和Python进行图像掩膜与直方图分析

文章目录 引言1. 准备工作2. 加载并显示原始图像3. 创建掩膜3. 应用掩膜5. 计算并显示直方图6. 结果分析7. 总结 引言 在图像处理中,掩膜(Mask)是一个非常重要的概念,它允许我们选择性地处理图像的特定区域。今天,我将通过一个实际的例子来展…

Genio 1200 Evaluation MT8395平台安装ubuntu

官网教程: Getting Started with Genio 1200 Evaluation Kit — Ubuntu on Genio documentation Windows PC工具: Setup Tool Environment (Windows) — IoT Yocto documentation 镜像下载地址: Install Ubuntu on MediaTek Genio | Ubu…

如何画好架构图:架构思维的三大底层逻辑

👉目录 0 前言 1 宏观 2 中观 3 微观 4 补充 俗话说,一图胜千言。日常工作中,当我们要表达自己的设计思路的时候,会画各式各样的图。但因为各自知识储备的差异,思维的差异,不同类型的系统侧重的架构设计点也…

Spring MVC扩展消息转换器-->格式化时间信息

Spring MVC 的消息转换器的作用:在 HTTP 请求/响应与 Java 对象之间进行转换 可以自行扩展消息转换器 一、创建对象映射规则 package com.sky.json;import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.Objec…

Elasticsearch 的自动补全以及RestAPI的使用

Elasticsearch 提供了强大的自动补全 (Autocomplete) 功能,以下为一个基础的自动补全DSL语句 {"suggest": {"my_suggestion": { // 自定义建议器名称,可按需修改"text": "ap", // 用户输入的前缀(如搜索框…

1.4、SDH网状拓扑

链形网星形网树形网环形网网孔形网 1.链形拓扑 结构: 节点像链条一样首尾依次串联连接。信号从一个节点传到下一个节点,直至终点。 特点: 简单经济: 结构最简单,成本最低,适用于沿线覆盖(如铁…

如何在 ArcGIS 中使用 Microsoft Excel 文件_20250614

如何在 ArcGIS 中使用 Microsoft Excel 文件 软件版本:win11; ArcGIS10.8; Office2024 1. 确认 ArcGIS 10.8 对 .xlsx 文件的支持 ArcGIS 10.8 支持 .xlsx 文件(Excel 2007 及以上格式),但需要安装 Microsoft Access Database …

Python----OpenCV(图像处理——图像的多种属性、RGB与BGR色彩空间、HSB、HSV与HSL、ROI区域)

Python----计算机视觉处理(opencv:像素,RGB颜色,图像的存储,opencv安装,代码展示) Python----计算机视觉处理(Opencv:图片颜色识别:RGB颜色空间,…

java设计模式[1]之设计模式概览

文章目录 设计模式什么是设计模式为什么要学习设计模式设计模式的设计原则设计模式的分类 设计模式 什么是设计模式 设计模式是前人根据经验的总结,是软件开发中的最佳实践,帮助开发者在面对复杂设计问题时提供有效的解决方案。设计模式不仅仅只是一种…

aflplusplus:开源的模糊测试工具!全参数详细教程!Kali Linux教程!(四)

使用 afl-lto clang LLVM 编译器 1. -help 显示可用选项 afl-lto --help 其他选项同上,这里不再展开叙述。 afl-lto 1. -help 显示可用选项 afl-lto --help 其他选项同上,这里不再展开叙述。 afl-network-client 1. 帮助文档 afl-network-cl…

区间合并:牛奶

区间合并:牛奶 牛奶 www.acwing.com/problem/content/description/1345/ 本质就是区间合并问题从第一次挤奶才开始计算两个最长时间 import java.util.*;public class Main {static final int N 5010;static Pair[] pairs new Pair[N];static class Pair imple…

Hive实现值列表横向展示(非列转行)

一、场景说明: 当前有各个流程的节点名称和节点时间。数仓中的表存在的格式为纵向存储,分别为节点名称、接收时间 现数据分析过程中需要将每个流程的节点时间横向展示,如果没有该节点则置空 这种区别于行转列和列转行的操作。(具体可参考博主**

蓝桥杯20151 跳石头

问题描述 小明正在和朋友们玩跳石头的小游戏,一共有 n 块石头按 1 到 n 顺序排成一排,第 i 块石头上写有正整数权值 ci​ 。 如果某一时刻小明在第 j 块石头,那么他可以选择跳向第 jcj​ 块石头 (前提 jcj≤n )或者跳…

深度学习——基于卷积神经网络的MNIST手写数字识别详解

文章目录 引言1. 环境准备和数据加载1.1 下载MNIST数据集1.2 数据可视化 2. 数据预处理3. 设备配置4. 构建卷积神经网络模型5. 训练和测试函数5.1 训练函数5.2 测试函数 6. 模型训练和评估6.1 初始化损失函数和优化器6.2 训练过程 7. 关键点解析8. 完整代码9. 总结 引言 手写数…

Activiti初识

文章目录 1 工作流介绍1_工作流概念介绍2 工作流系统3 适用行业4 具体应用5 实现方式 2 Activiti介绍1_BPM2 BPM 软件3 BPMN 3 使用步骤1_部署 activiti2 流程定义3 流程定义部署4 启动一个流程实例5 用户查询待办任务(Task)6 用户办理任务7 流程结束 4 Activiti应用1_Activiti…

CyclicBarrier入门代码解析

文章目录 核心思想:组队出游,人到齐了才出发 🚌最简单易懂的代码示例代码解析运行效果分析CyclicBarrier vs CountDownLatch 的关键区别CyclicBarrier在业务系统里面通常有什么常用的应用场景核心应用模式1. 数据并行处理与ETL(最…

Maven 配置中绕过 HTTP 阻断机制的完整解决方案

Maven 配置中绕过 HTTP 阻断机制的完整解决方案 一、背景与问题分析 自 Maven 3.8.1 版本起&#xff0c;出于安全考虑&#xff0c;默认禁止了对 HTTP 仓库的访问。这一机制通过 <mirror> 配置中的 maven-default-http-blocker 实现&#xff0c;其作用是拦截所有使用 HT…

【大厂机试题解法笔记】恢复数字序列

题目 对于一个连续正整数组成的序列&#xff0c;可以将其拼接成一个字符串&#xff0c;再将字符串里的部分字符打乱顺序。如序列8 9 10 11 12,拼接成的字符串为89101112,打乱一部分字符后得到90811211,原来的正整数10就被拆成了0和1。 现给定一个按如上规则得到的打乱字符的字…

MongoDB 事务有哪些限制和注意事项?

MongoDB 的多文档 ACID 事务虽然强大&#xff0c;但在使用时确实有一些限制和需要特别注意的事项。 以下是主要的限制和注意事项&#xff1a; 1. 性能开销 (Performance Overhead) 额外协调: 事务需要额外的协调工作&#xff0c;包括跟踪事务状态、管理锁&#xff08;即使是乐…

CTF实战技巧:获取初始权限后如何高效查找Flag

CTF实战技巧&#xff1a;获取初始权限后如何高效查找Flag 在CTF比赛中&#xff0c;获得初始访问权限只是开始&#xff0c;真正的挑战在于如何在系统中高效定位Flag。本文将分享我在渗透测试中总结的系统化Flag搜索方法&#xff0c;涵盖Linux和Windows双平台。 引言&#xff1a;…