自动化测试

1. 什么是自动化

1.1 自动化概念

自动化就是解放测试人员双手,测试工作由代码代替人工执行测试工作。

自动化不能完全代替手工测试。

自动化测试指软件测试的自动化,在预设状态下运行应用程序或系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。

1.2 自动化分类

UI测试:

  • 测试对象:前端页面
  • 工具:Selenium、Airtest、Appium.....

接口测试:

  • 测试对象:后端测试
  • 工具:postman、Jmeter、request+unittest(python)、HttpClient+Junit(java)....

单元测试:

  • 测试对象:一个一个的方法
  • 工具:Junit & TestNG(java)、Unittest & pytest(python)......

金字塔从下至上特点:

  • 越往上越接近用户
  • 越往上定位问题的成本越高

1.3 自动化好处

  • 提高测试效率
  • 一定程度上保障软件质量

2. Selenium

2.1 什么是Selenium

Selenium是一个用来测试web前端的一个自动化框架

2.2 特点

  • 开源的,可以查看源码
  • 支持多语言:Java、Python、C#、Ruby
  • 支持多种浏览器:Chrome、Edge、Opera...
  • 有丰富的API

3. Selenium原理

1. 三个角色

(1)自动化脚本代码:编写的自动化测试用例(代码)

(2)webdriver浏览器驱动:可执行程序

(3)浏览器:Chrome、Edge、Opera...

2. 三个角色之间的关系

  • 启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为webdriverremote server
  • 客户端(也就是测试脚本),借助ComandExecutor发送HTTP请求给sever端(通信协议:The WebDriver Wire Protocol,在HTTP requestbody中,会以WebDriver Wire协议规定的JSON式的字符串来告诉Selenium我们希望浏览器接下来做什么事情)。
  • Sever端需要依赖原生的浏览器组件,转化Web Service的命令为浏览器native的调用来完成操作。

4. Selenium API

1. 验证环境搭建是否成功

2. 如何打开网页、如何关闭浏览器

3. 定位元素

CSS选择器定位

  • 通过id选择器定位  #kw
  • class选择器定位   .s_ipt
  • 标签选择器定位元素   标签值
  • 父级子级定位元素        form>span>input:nth-child(2)    

xpath定位

(1)绝对路径定位:/html/body/div[1]

(2)相对路径定位://

  • 相对路径+索引 //form/div[1]/div[1]/input
  • 相对路径+属性 //input[@id="username"]
  • 相对路径+通配符  //*[@*="username"]
  • 相对路径+文本  //h3[text()=""登录]

xpath定位元素的效率没有css选择器定位元素的效率高

4. 操作测试对象

webdriver中比较常用的操作对象的方法有下面几个:

  • click点击对象
  • send_keys 在对象上模拟按键输入
  • clear 清除对象输入的文本内容
  • submit 提交
  • text 用于获取元素的文本信息
private static void test() throws InterruptedException{//创建一个浏览器驱动WebDriver webdriver=new ChromDriver();//打开百度首页webDriver.get("https://ww.baidu .com");//输入“软件测试”webDriver.findElement(By.cssSelector("#kw")).sendKeys("冲刺班");//清除输入信息(“软件测试”)webDriver.findElement(By.cssselector("#kw")).clear();//获取输入框输入信息String result_string=webDriver.findElement(By.cssselector("#kw")).getText();//若输入信息为空if(result_string.equals("")){//测试通过System.out.println("测试通过");}else{//反之不通过System.out.println("测试不通过");}sleep(1000);webDriver.quit();
}

submit和click之间的区别

  • submit操作元素必须放在form标签下
  • click对标签没有要求

5. 添加等待 

(1)强制等待        sleep(5000);  //休眠5秒

(2)智能等待        找到元素之后就会进行退出,此处的时间是最大等待时长

webDriver.manage().timeouts().implictlyWait(Duration.ofSeconds(10));  //等待10秒

6. 打印信息

7. 浏览器操作

(1)浏览器最大化

private static void test08() throws InterruptedException{webDriver webDriver = new ChromeDriver();webDriver.get("https://www.baidu.com/L");sleep(millis:3000);webDriver.manage().window().maximize();webDriver.manage().window().fullscreen();sleep(millis:3000);webDriver.quit();
}

(2)浏览器滚动

  • #浏览器的前进  browser.forward()
  • #浏览器的后退  browser.back()
  • # 将浏览器滚动条滑到最顶端 document.documentElement.scrollTop=0
  • #将浏览器滚动条滑到最底端 document.documentElement.scrollTop=10000
    示例 js="var q=document.documentElement.scrollTop=10000" driver.execute_script(js) execute_script(script, *args) ,在当前窗口 / 框架同步执行 javaScript

8. 键盘事件

9. 鼠标事件9 

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

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

相关文章

CSS3常用的新功能总结

CSS3常用的新功能包括圆角、阴渐变、2D变换、3D旋转、动画、viewpor和媒体查询。 圆角、阴影 border-redius 对一个元素实现圆角效果,是通过border-redius完成的。属性为两种方式: 一个属性值,表示设置所有四个角的半径为相同值&#xff…

免费SSL/TLS域名证书Certbot配置详细过程

文章目录 1. 在服务器上安装 Certbot2. 停止 web 服务器3. 运行 certbot 命令4. 证书生成位置5. 配置 web 服务器6. 重新加载 web 服务器7. 验证8. 配置自动续期发现问题1. Problem binding to port 80: Could not bind to IPv4 or IPv6.2. live directory exists for example.…

Clion 使用ffmpeg 学习1 开发环境配置

Clion 使用ffmpeg 学习1 开发环境配置 一、准备工作1. 准备环境2. 下载FFmpeg 二、操作步骤1. Clion 新建一个C项目2. 修改 CMakeLists.txt3. 修改配置4. 运行测试5. 打印rtsp 流信息的 demo 一、准备工作 在视频处理和多媒体应用程序开发中,FFmpeg 是一个强大的开…

数学建模--逻辑回归算法的Python实现

首先感谢CSDN上发布吴恩达的机器学习逻辑回归算法任务的各位大佬. 通过大佬的讲解和代码才勉强学会. 这篇文章也就是简单记录一下过程和代码. CSDN上写有关这类文章的大佬有很多,大家都可以多看一看学习学习. 机器学习方面主要还是过程和方法. 这篇文章只完成了线性可分方面的任…

Promise常用方法笔记

mixin.methods.getList(xxx) 是axios的二次封装 是通过Promise进行基本封装 let a mixin.methods.getList(toosSet.gettype);let b mixin.methods.getList(toosSet.gettypes);let c mixin.methods.getList(toosSet.gettypess);Promise.all([a, b, c]).then((res) > {aler…

音频应用编程

目录 ALSA 概述alsa-lib 简介sound 设备节点alsa-lib 移植编写一个简单地alsa-lib 应用程序一些基本概念打开PCM 设备设置硬件参数读/写数据示例代码之PCM 播放示例代码值PCM 录音 使用异步方式PCM 播放示例-异步方式PCM 录音示例-异步方式 使用poll()函数使用poll I/O 多路复用…

Bridge Champ举办人机对战赛:NFT游戏与传统竞技共生发展编织新格局

概要 现在,NFT与体育竞技正日益紧密地联系在一起。一些体育项目开始推出与赛事或球队相关的NFT,同时也有部分NFT游戏开始举办电子竞技赛事。这种共生发展正在改变体育竞技的生态。 笔者采访了桥牌冠军项目相关负责人,探讨NFT游戏与传统体育竞技的融合潜力。桥牌冠军近期成功举…

postman json复杂数据的模拟

先设置路径 然后可以定义下边数据(Key value) 也可以不定义 看你的情况 [{"mac": "4C-77-66-19-50-65","addressPattern": "98jd","platform": "ios","registrationId": "…

风向变了!智能汽车何以「降本」

随着软件定义汽车的概念逐步落地,以及底盘、动力、座舱、智驾、车身等不同域(分布式或者混合式)的功能更新迭代和融合,汽车行业正在意识到:底层硬件架构重构的迫切性。 事实上,早在2016年,作为传…

UI自动化之关键字驱动

关键字驱动框架:将每一条测试用例分成四个不同的部分 测试步骤(Test Step):一个测试步骤的描述或者是测试对象的一个操作说明测试步骤中的对象(Test Object):指页面的对象或者元素对象执行的动…

mysql 查询优化 、索引失效

查询优化 物理查询优化 通过索引和表连接方式等技术来进行优化,这里重点需要掌握索引的使用 逻辑查询优化 通过SQL 等价变换 提升查询效率,直白一点就是说,换一种查询写法执行效率可能更高 索引失效 计算、函数、类型转换(自动或…

Vue.js 报错:Cannot read property ‘validate‘ of undefined“

错误解决 起因,是我将elemnt-ui登录,默认放在mounted()函数里面,导致vue初始化就调用这个函数。 找了网上,有以下错误原因: 1.一个是你ref写错了,导致获取不了这个表单dom,我这显然不是。 2.…

【javaweb】学习日记Day9 - Mybatis 基础操作

目录 一、删除 (1)在mapper接口执行sql删除语句 ① 注解后sql语句没有提示怎么办? (2)测试层 (3)开启mybatis日志 (4)预编译SQL 二、新增 (1&#…

数据库-多表设计

概述: 项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本分为三种: 一对…

2023_Spark_实验四:SCALA基础

一、在IDEA中执行以下语句 或者用windows徽标R 输入cmd 进入命令提示符 输入scala直接进入编写界面 1、Scala的常用数据类型 注意:在Scala中,任何数据都是对象。例如: scala> 1 res0: Int 1scala> 1.toString res1: String 1scala…

【前端】CSS-Flex弹性盒模型布局

目录 一、前言二、Flex布局是什么1、任何一个容器都可以指定为Flex布局2、行内元素也可以使用Flex布局3、Webkit内核的浏览器,必须加上-webkit前缀 三、基本概念四、flex常用的两种属性1、容器属性2、项目属性 五、容器属性1、flex-direction①、定义②、语句1&…

Git学习——细节补充

Git学习——细节补充 1. git diff2. git log3. git reset4. git reflog5. 提交撤销5.1 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时5.2 当提交到了stage区后,想要退回 6. git remote7. git pull origin master --no-rebase8. 分支管理9. g…

风控引擎如何快速添加模型,并实时了解运行状态?

目录 风控模型的主要类型 风控引擎如何管理模型? 模型就是基于目标群体的大规模采样数据,挖掘出某个实际问题或客观事物的现象本质及运行规律,利用抽象的概念分析存在问题或风险,计算推演出减轻、防范问题或风险的对策过程&…

死锁是什么?死锁的字节码指令了解?

用幽默浅显的言语来说死锁 半生:我已经拿到了机考的第一名,就差笔试第一名了 小一:我已经拿到了笔试的第一名,就差机考第一名了 面试官:我很看好你俩,继续"干", 同时拿到2个的第一名才能拿到offe…

win10 ping不通 Docker ip(解决截图)

背景: win10下载了docker desktop就是这个图,然后计划做一个springboot连接docker。 docker部署springboot :docker 部署springboot(成功、截图)_總鑽風的博客-CSDN博客 问题:spring boot部署docker后,docker接口通了&#xff0…