【测试】自动化测试

news2025/1/16 17:46:56

努力经营当下,直至未来明朗!

文章目录

  • 一、自动化概述
  • 二、自动化测试的分类
  • 三、自动化测试工具:selenium
  • 四、一个简单的自动化用例
  • 五、Selenium常用方法
    • 1. 查找页面元素:
    • 2.元素的定位(By类)
  • 小结


普通小孩也要热爱生活!

一、自动化概述

  1. 自动化能够减少人力的消耗,同时提高生活质量
  2. 通过自动化测试能够有效减少人力的投入,同时提高了测试的质量和效率。
  3. 注意:自动化不能取代人力的作用。
  4. 版本迭代更新速度较快,如果仅仅通过人力来进行回归测试是有较大压力的,也不太现实,所以就可以借助自动化测试。

二、自动化测试的分类

  1. 自动化测试分为:接口自动化测试 和 UI自动化测试
  2. UI自动化测试:移动端自动化测试、web端自动化测试
  3. 注意:我们目前所针对的是web端自动化测试(一定要明确)

三、自动化测试工具:selenium

  1. Selenium是实施web端自动化测试的工具

  2. 自动化测试工具很多(如:QTP收费、Selenium开源、RFT收费),为什么要选择selenium作为web端测试工具呢?
    开源免费
    ② Selenium可以支持/兼容很多浏览器进行自动化测试,如谷歌、火狐、IE等(但是不同的浏览器是需要修改自动化里的一些配置的,同时也需要修改一些浏览器里的配置)
    支持多系统,如Linux、Windows、MacOS
    支持多语言,如Java、Python、JavaScript等
    ⑤ Selenium包提供了很多可供测试使用的API

  3. 环境部署
    如果想要使用selenium实施web自动化测试,需要的环境是什么?
    Chrome浏览器 + 谷歌驱动(ChromeDriver) + selenium工具包(引入依赖)

① 一定要注意驱动版本和浏览器版本的对应!!
② 注:java的jdk版本最低要求是8

  1. 什么是驱动?

① 举栗子:汽车有驱动才能跑起来
② 计算机也有驱动程序,可以驱动计算机和设备工作起来
③ 人工测试的情况下,人是手动打开浏览器的,那么驱动就是人力(浏览器原生操作)
④ 对于自动化来说,代码是不能够直接打开浏览器的,所以就需要借助驱动程序才能够打开浏览器
⑤ 不同的浏览器对应不同的驱动,只有匹配的驱动才能打开对应的浏览器

  1. Selenium编写的自动化脚本是如何打开浏览器的?selenium、Driver、浏览器三者之间的关系?
    0
    驱动要接收selenium脚本发送过来的http请求并解析请求,其实也就是:驱动相当于服务器的功能

(注:查看端口是否被占用:netstat -na | findstr 端口号


四、一个简单的自动化用例

  1. 创建一个maven项目 -> 在pom.xml中添加依赖 -> 进行reload
<dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.0.0</version>
    </dependency>
</dependencies>
  1. src -> test -> java -> new -> (创建包) -> 创建java源文件(+需要创建运行测试用例的源文件)
    1
    2

  2. 在编写测试的源文件中创建方法来编写测试用例,然后再运行的源文件中进行调用运行。

  3. 举栗子:在百度网址中搜索关键词“刘亦菲”
    1)手动搜索步骤:

①打开谷歌浏览器
②在url中输入https://www.baidu.com
③在输入框中输入关键词“刘亦菲”
④进行百度一下
⑤关闭浏览器,搜索结束

2)创建自动化测试:(类似手动步骤)
注意:按钮等元素可以使用fn+f12来进行获取!!
5
3)参考代码:自动化测试:刘亦菲

  1. 简单自动化实例主要包括五个步骤
    ① 创建浏览器驱动,创建会话
    ② 获取网址,访问网站
    ③ 查找元素
    ④ 操作元素
    关闭驱动,结束会话

五、Selenium常用方法

1. 查找页面元素:

  1. findElement(参数):查找一个元素
    ① 参数:By类(提供通过什么方式来查找元素)
    ② 返回值:WebElement
    ③ 当元素可以在页面找到时就正常运行,找不到时程序就报异常NoSuchElementException。

  2. findElements(参数):查找多个元素
    ① 参数:By类(提供通过什么方式来查找元素)
    ② 返回值:List<WebElement>

2.元素的定位(By类)

By类元素定位的方法:
6

  1. selector:选择器
    1) 选择器分为基础选择器和复合选择器
    2) 选择器功能:选中页面中指定的标签元素
    3) 方式:ctrl+fn打开开发者工具 -> 然后进行选择查看 -> 右键复制selector -> 复制完成后可以进行ctrl+f查看定位
    7

  2. xpath
    1)xpath:xml路径语言,是用来确定xml文档中某部分位置的语言。
    2)语法:(了解就行,使用的时候直接进行复制粘贴)

① 层级:/子级 //跳级
② 属性:@
③ 函数:contains() …

3) xpath如://*[@id="so-hotword"]/ul/li[6] ,li[n]表示的是从1开始数的第n条li标签的数据。

4)补充:自动化中要求元素的定位要唯一

5)但是手动在页面上复制的selector或xpath元素不一定是唯一的,需要我们进行手动修改到唯一。(在ctrl+f的查找框中修改,同时查看是否唯一!)


小结

  1. 自动化测试的优势
  2. 自动化测试的分类以及我们主要针对的测试
  3. 选择selenium的原因
  4. Selenium编写的自动化脚本是如何打开浏览器的?(三者关系)
  5. 简单自动化测试五个步骤
  6. selenium常用方法:查找元素findElement、元素的定位selector/xpath

yyy

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

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

相关文章

Java中this的用法

一、this关键字 1.this的类型&#xff1a;哪个对象调用就是哪个对象的引用类型 二、用法总结 1.this.data; //访问属性 2.this.func(); //访问方法 3.this(); //调用本类中其他构造方法 三、解释用法 1.this.data 这种是在成员方法中使用 让我们来看看不加this会出现什…

ArcGIS基础实验操作100例--实验95平滑处理栅格数据

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 空间分析篇--实验95 平滑处理栅格数据 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&…

ST算法解决BMQ问题详解(图文并茂,保证看懂)

一.RMQ问题的概念RMQ&#xff08;Range Minimum/Maximum Query&#xff09;问题&#xff0c;简单说就是求区间最值问题&#xff0c;是求区间最大值或最小值&#xff0c;即范围最值问题&#xff0c;若是简单的单次询问或者是区间长度很短的询问&#xff0c;可以用暴力的方法来实…

【web安全】——文件上传漏洞

作者名&#xff1a;白昼安全主页面链接&#xff1a; 主页传送门创作初心&#xff1a; 舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座右铭…

【寒假第2天】LeetCode刷题

&#x1f308;一、选择题 &#x1f47f;第1题&#xff1a; 下面给出的四种排序法中( )排序法是不稳定性排序法A.插入排序 B.冒泡排序 C.归并排序 D.堆&#xff0c;希尔排序&#xff0c;快速排序 答案&#xff1a;D 为啥堆排序是不稳定的&am…

SCA 工具:开源安全威胁一手掌控

1、什么是 SCA SCA&#xff08;Software Composition Analysis&#xff09;软件成分分析&#xff0c;通俗的理解就是通过分析软件包含的一些信息和特征来实现对该软件的识别、管理、追踪的技术。我们知道在当今软件开发中&#xff0c;引入开源软件(注 1)到你的项目中&#xff…

线性DP-----(从某点走到某点求最值问题)

线性DP 线性dp问题是dp问题中比较简单的问题,通常一个状态转移方程就可以搞定,线性dp通常求最大值,最小值问题,下面介绍线性dp中从某点走到某点最值问题。 第一类问题(走一遍) 该类问题只走一遍,动态规划中用到的数组f(i,j)含义就是到达(i,j)点得到的最优解 例题1—数字三角形 …

分享88个JavaScript源码,总有一款适合您

JavaScript源码 分享88个JavaScript源码&#xff0c;总有一款适合您 JavaScript源码下载链接&#xff1a;https://pan.baidu.com/s/1guiYWOPKdP1zNW7T8P0caQ?pwd6666 提取码&#xff1a;6666 采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 下面是文件的名字&#xf…

jinja2 循环计数内置变量loop

变量内容loop.index循环迭代计数&#xff08;从1开始&#xff09;loop.index0循环迭代计数&#xff08;从0开始&#xff09;loop.revindex循环迭代倒序计数&#xff08;从len开始&#xff0c;到1结束&#xff09;loop.revindex0循环迭代倒序计数&#xff08;从len&#xff0d;1…

【正点原子FPGA连载】 第十八章双目OV5640摄像头HDMI显示实验 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第十八章双目OV5…

jsp题库管理系统Myeclipse开发sqlserver数据库web结构java编程计算机网页项目

一、源码特点 jsp 题库管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开 发&#xff0c;数据库为sqlserver&#xff0c;使…

Kafka集群安装

Apache kafka是由Apache软件基金会开发的一个开源流处理平台&#xff0c;由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;是消息中间件的一种&#xff0c;用于构建实时数据管道和流应用程序。Kafka官网&#xff1a;http://kafka.apache.org/安装环…

1-连续系统PID的Simulink仿真

以二阶线性传递函数。为被控对象&#xff0c;进行模拟PID控制。在信号发生器中选择正弦信号&#xff0c;仿真时取&#xff0c;&#xff0c;&#xff0c;输入指令为&#xff0c;其中A1.0,F0.20Hz。采用ODE45迭代方法&#xff0c;仿真时间为10s。PID控制器由Simulink下的工具箱提…

【Ansible】Ansible Jinja2 模板

Ansible Jinja2 模板 文章目录Ansible Jinja2 模板一、Ansible Jinja2 模板背景介绍二、JinJa2 模块1.JinJa2 是什么&#xff1f;2.Jinja2 必知会3.Jinja2 逻辑控制三、如何使用模板四、 实例演示一、Ansible Jinja2 模板背景介绍 目前 nginx 的配置文件在所有的服务器上都是相…

六种常见系统架构

六种常见系统架构 - 基础篇目录概述需求&#xff1a;设计思路实现思路分析1.URL管理2.微服务架构3.四、微服务架构4.多级缓存架构参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,m…

【Unity学习笔记】[Unity中文课堂教程] C#中级编程代码

【Unity学习笔记】[Unity中文课堂教程] C#中级编程代码 最近想补一补C#基础&#xff0c;Unity官方的C#中级编程教程质量很高&#xff0c;于是开个帖子把跟着敲记录了部分价讲解和我自己的理解的代码存在这 原课程链接&#xff1a;添加链接描述 https://www.bilibili.com/video…

Java字符流(FileReader/FileWriter)

文章目录概念FileReader字符输入流相关方法和构造器FileWriter字符输出流相关方法和构造器为什么用完不close或flush&#xff0c;会写入不到数据&#xff1f;概念 在Java中&#xff0c;使用Unicode约定存储字符。字符流自动允许我们逐字符读/写数据&#xff0c;有助于执行16位…

2023年网络爬虫实训(第五天)

任务1&#xff1a;掌握re.match和re.search的用法,完成课堂代码.掌握基础通配符的用法如\w \s \d [] * ^ $.并完成作业4. 1.re.match() re.match&#xff08;&#xff09;的是从头匹配一个符合规则的字符串&#xff0c;从起始位置开始匹配&#xff0c;匹配成功返回一个对象&…

1.力扣刷题之二分查找

题目: 704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 思路 解题 左闭右闭 左闭右开 题目: 704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 思路 这道题首先要找出关键词:有序数组&#xff0c;元素不重复&#xff1b;这些都是使用二分法的前提条件&#x…

使用Stable Diffusion和Pokedex的描述生成神奇宝贝图片

还记得我们以前使用GAN、Clip、DALL-E生成神奇宝贝的文章吗&#xff0c;现在是时候使用Stable Diffusion了 在本文中&#xff0c;我将展示如何从神奇宝贝系列不同游戏中的Pokedex条目中获取神奇宝贝描述&#xff0c;并使用Stable Diffusion根据这些藐视生成图片&#xff0c;这样…