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

【软件测试】自动化测试 — selenium快速上手

目录

1. 自动化测试的概念

2. web自动化测试

2.1 驱动

2.2 驱动管理

3. Selenium

3.1 导入依赖

3.2 快速上手

3.3 selenium + webDriver + 浏览器的原理


1. 自动化测试的概念

通过模仿人的行为,将人为驱动转变为机器驱动,设定好预期的结果,通过校验预期的结果和实际的结果是否一致,从而达到测试软件的功能的目的,通过⾃动化测试有效减少人力的消耗的同时也提⾼了测试的质量和效率。

自动化测试的典型应用场景就是回归测试

回归测试:避免因为添加某个新功能或修复某个bug,导致原来的功能受到影响

在回归测试中,很多的测试都是重复的,传统的手工测试太耗费时间,让机器进行测试,可以提高测试的准确性和执行效率

2. web自动化测试

web自动化测试,使用专门的软件测试工具,自动驱动web浏览器,执行预先定义好的用户操作,并验证网页的元素状态是否符合预期

2.1 驱动

显卡要有显卡驱动才能正常渲染画面;汽车要有发动机驱动才能跑起来;

自动化程序安装了web驱动(WebDriver) 就能执行打开浏览器等一系列操作,WebDriver 以本地化方式驱动浏览器。

不同的浏览器需要使用不同的浏览器驱动,不同版本的浏览器也需要不同版本的浏览器驱动

也就是说每次浏览器更新,都需要下载对应版本的浏览器驱动,那一天浏览器更新了,驱动没有更新,就会导致自动化失败,这样很繁琐,其实也有解决办法

2.2 驱动管理

我们不需要下载驱动程序,只需要在程序的pom文件中,导入对应的依赖,驱动管理程序会自动下载正确的驱动

		<dependency><groupId>io.github.bonigarcia</groupId><artifactId>webdrivermanager</artifactId><version>5.8.0</version><scope>test</scope></dependency>

通过导入依赖,很好的解决了WebDriver不好管理的问题,可以自动化处理浏览器驱动的下载、版本匹配和路径配置,让 Selenium等测试工具的 Web 自动化测试更稳定、更便捷。

3. Selenium

selenium是目前流行的Web自动化测试工具,通过使用selenium中提供的方法可以很方便的对web进行自动化测试

3.1 导入依赖

使用起来很方便,只需要在项目中导入对应的依赖即可

		<dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>4.0.0</version></dependency>

导入后,即可使用selenium中提供的方法,编写代码,对web浏览器进行自动化测试

3.2 快速上手

在我们设计测试用例时,需要写清楚执行的步骤,自动化测试代码编写也是同样如此,规定好先干什么,后干什么(别忘记导入对应的依赖

比如:在百度页面搜索《三国演义》

  1. 打开谷歌浏览器
  2. 输入网址:https://www.baidu.com
  3. 找到输入框,手动输入《三国演义》
  4. 点击搜索按钮
  5. 关闭浏览器

这个是百度页面搜索水浒传的步骤,自动化测试代码编写

    //测试百度搜索void test01()  {//1.记载对应的驱动WebDriverManager.chromedriver().setup();//2.设置加载的策略ChromeOptions options = new ChromeOptions();//允许访问所有链接options.addArguments("--remote-allow-origins=*");WebDriver webDriver =  new ChromeDriver(options);//2.输入网址webDriver.get("https://www.baidu.com");//3.输入内容webDriver.findElement(By.cssSelector("#kw")).sendKeys("《三国演义》");//4.点击搜索webDriver.findElement(By.cssSelector("#su")).click();//5.关闭浏览器webDriver.quit();}

3.3 selenium + webDriver + 浏览器的原理

实现原理:

  1. Selenium脚本通过调用WebDriver API创建HTTP请求

  2. webDriver获取请求后并解析,将解析后的数据发送给浏览器

  3. 浏览器执行实际操作

http://www.dtcms.com/a/330480.html

相关文章:

  • Java设计模式之《策略模式》
  • STM32L051C8与STM32L151C8的主要区别
  • visual studio调试cmake项目记录
  • 用飞算JavaAI一键生成电商平台项目:从需求到落地的高效实践
  • 远程影音访问:通过 cpolar 内网穿透服务使用 LibreTV
  • Mybatis学习笔记(九)
  • Spring Boot + Redis + 布隆过滤器防止缓存穿透
  • [已解决]当启动 Spring Boot 应用时出现 Using generated security password xxx提示
  • OpenCV 视频处理全解析
  • EI学术会议 | 可再生能源、智能电网、电力系统优化、能源存储技术
  • Linux系统Namespace隔离实战:dd/mkfs/mount/unshare命令组合应用
  • 缓存元数据损坏操作步骤(lvmcache修复)
  • 微软推出AI恶意软件检测智能体 Project Ire
  • 截断重要性采样(TIS)在医疗AI大模型训练中的优化路径
  • 嵌入式领域,ROM和RAM的区别
  • pytorch学习笔记-Loss的使用、在神经网络中加入Loss、优化器(optimizer)的使用
  • 基于SpringBoot+Vue的轻手工创意分享平台(WebSocket即时通讯、协同过滤算法、Echarts图形化分析)
  • 依托AR远程协助,沟通协作,高效流畅
  • 七、SpringBoot工程日志设置
  • [前端算法]动态规划
  • 【保姆级教程】CentOS 7 部署 FastDFS 全流程(避坑指南)
  • 【Docker】安装kafka案例
  • 深入解析 Spring IOC 容器在 Web 环境中的启动机制
  • ActiveReports 19.1 Crack
  • 新手向:Python条件语句(if-elif-else)使用指南
  • 初识HTML
  • 云原生俱乐部-k8s知识点归纳(1)
  • AI 编程实践:用 Trae 快速开发 HTML 贪吃蛇游戏
  • 游戏行业DevOps实践:维塔士集团基于Atlassian工具与龙智服务构建全球化游戏开发协作平台
  • LLM 中 语音编码与文本embeding的本质区别