软件测试—Selenium01

news2024/11/26 22:30:18

软件测试—Selenium01

  • 🔎自动化测试
    • 自动化测试的定义
    • 自动化测试的分类
  • 🔎Selenium
    • Selenium 是什么
    • Selenium 的特点
    • Selenium 的原理
    • Selenium + Java 的环境搭建
    • Selenium 中常用的 API
      • By.cssSelector()
      • By.xpath()
      • By.cssSelector() 与 By.xpath() 的比较
  • 🔎操作测试对象
    • click() 与 submit() 的区别
  • 🔎结尾

🔎自动化测试

自动化测试的定义


自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最
后评估运行结果

自动化测试是将人为驱动的测试行为转化为机器执行的过程

自动化测试的分类


在这里插入图片描述

  • 常见的自动化测试包括
    • UI 自动化
    • 接口自动化
    • 单元测试自动化

🔎Selenium

Selenium 是什么


Selenium 是应用于 web 自动化测试的框架

Selenium 的特点


  • 支持各种浏览器(Chrome, Edge, Firefox…)
  • 支持各种语言(Java, Python, C#…)
  • 有着较多的 API

Selenium 的原理


在这里插入图片描述

Selenium + Java 的环境搭建


关于 Selenium + Java 的环境搭建
可以参考这篇文章

Selenium 中常用的 API

By.cssSelector()


元素的定位findElement
标签选择器div, span, a...
类选择器.class
id 选择器#id
后代选择器父级选择器 子级选择器

下面以百度的输入框为例
分别介绍元素的几种定位方式

在这里插入图片描述
在这里插入图片描述

(1) 标签选择器

通过标签名定位元素

WebElement element = webDriver.findElement(By.cssSelector("标签名"));

webDriver . findElement() 的返回值类型是 WebElement

(2)类选择器

// 创建 Chrome 选项
ChromeOptions options = new ChromeOptions();
// 允许所有请求
options.addArguments("--remote-allow-origins=*");
// 创建驱动
WebDriver webDriver = new ChromeDriver(options);
// 打开百度首页
webDriver.get("https://www.baidu.com/");
// 找到百度搜索框
WebElement element = webDriver.findElement(By.cssSelector(".s_ipt"));

(3) id 选择器

// 创建 Chrome 选项
ChromeOptions options = new ChromeOptions();
// 允许所有请求
options.addArguments("--remote-allow-origins=*");
// 创建驱动
WebDriver webDriver = new ChromeDriver(options);
// 打开百度首页
webDriver.get("https://www.baidu.com/");
// 找到百度搜索框
WebElement element = webDriver.findElement(By.cssSelector("#kw"));

(4) 后代选择器

// 创建 Chrome 选项
ChromeOptions options = new ChromeOptions();
// 允许所有请求
options.addArguments("--remote-allow-origins=*");
// 创建驱动
WebDriver webDriver = new ChromeDriver(options);
// 打开百度首页
webDriver.get("https://www.baidu.com/");
// 找到百度搜索框
WebElement element = webDriver.findElement(By.cssSelector("span input"));

By.xpath()


绝对路径

// 创建 Chrome 选项
ChromeOptions options = new ChromeOptions();
// 允许所有请求
options.addArguments("--remote-allow-origins=*");
// 创建驱动
WebDriver webDriver = new ChromeDriver(options);
// 打开百度首页
webDriver.get("https://www.baidu.com/");
// 找到百度标题(百度一下, 你就知道)
WebElement element = webDriver.findElement(By.xpath("/html/head/title"));

绝对路径以 / 开头

相对路径

元素的定位findElement
相对路径 + 索引//form/span[1]/input
相对路径 + 属性值//input[@class="s_ipt"]
相对路径 + 通配符//*[@*="su"]
相对路径 + 文本匹配//a[text()="新闻"]

相对路径以 // 开头

(1) 相对路径 + 索引

在这里插入图片描述

WebElement element = webDriver.findElement(By.xpath("//form/span[1]/input"));

下标从1开始, 不是从0开始
span[1]表示第1个 span 标签
如果不写(span), 默认表示 span[1]

(2) 相对路径 + 属性值

在这里插入图片描述

WebElement element = webDriver.findElement(By.xpath("//input[@class=\"s_ipt\"]"));

(3) 相对路径 + 通配符

在这里插入图片描述

WebElement element = webDriver.findElement(By.xpath("//*[@*=\"kw\"]"));

(4) 相对路径 + 文本匹配

在这里插入图片描述

webDriver.findElement(By.xpath("//a[text()=\"新闻\"]")).click();

By.cssSelector() 与 By.xpath() 的比较

cssSelector() 选择器定位元素效率更高

🔎操作测试对象


  • click() 点击对象
  • sendKeys() 在对象上模拟按键输入
  • clear() 清空对象中的内容
  • submit() 提交
  • getText() 获取元素文本信息
  • getAttribute() 将标签所对应的内容转换为字符串
    • 以百度首页为例
    • String buttonValue = webDriver.findElement(By.cssSelector("#su")).getText();
    • 无法通过上述代码输出标签的内容
    • String buttonValue = webDriver.findElement(By.cssSelector("#su")).getAttribute("value");
    • 可以通过 getAttribute() 方法将 id = su 对应的标签中的内容转换为字符串

click() 与 submit() 的区别


submit() 无法提交标签在 form 表单之外的内容
click() 可以提交标签在 form 表单之外的内容

以百度首页为例
新闻标签在 form 表单之外

在这里插入图片描述

(1) 使用 click()

public static void main(String[] args) {
	    // 创建 Chrome 选项
	    ChromeOptions options = new ChromeOptions();
	    // 允许所有请求
	    options.addArguments("--remote-allow-origins=*");
	    // 创建驱动
	    WebDriver webDriver = new ChromeDriver(options);
	    // 打开百度首页
	    webDriver.get("https://www.baidu.com/");
	
	    webDriver.findElement(By.xpath("//a[text()=\"新闻\"]")).click();
}

在这里插入图片描述

在这里插入图片描述

(2) 使用 submit()

public static void main(String[] args) {
	    // 创建 Chrome 选项
	    ChromeOptions options = new ChromeOptions();
	    // 允许所有请求
	    options.addArguments("--remote-allow-origins=*");
	    // 创建驱动
	    WebDriver webDriver = new ChromeDriver(options);
	    // 打开百度首页
	    webDriver.get("https://www.baidu.com/");
	
	    webDriver.findElement(By.xpath("//a[text()=\"新闻\"]")).submit();
}

在这里插入图片描述

🔎结尾

创作不易,如果对您有帮助,希望您能点个免费的赞👍
大家有什么不太理解的,可以私信或者评论区留言,一起加油

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

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

相关文章

C++编译和链接

目录 一、源代码的组织 ①头文件(*.h) ②源文件(*.cpp) ③主程序(main函数所在的程序) ④从源代码到可执行文件,编译的过程有三大步骤: 1)编译预处理 2&#xff09…

Python学习笔记——《吴恩达Machine Learning》线性回归例程

文章目录 案例背景线性回归(Loss Regression)梯度下降法(批量梯度下降算法——batch gradient descent)计算成本函数和梯度下降使用线性回归拟合训练数据模型预测 梯度下降效果可视化完整版demo 案例背景 详情参照吴恩达机器学习…

Linux/Windows安装Maven

一、Linux部署Maven 注意:必须先安装jdk,maven与jdk(java -version)版本会有对应关系 版本对应(必看!):http://maven.apache.org/docs/history.html 官方tar包下载地址:h…

因为一个Bug,差点损失了100w

大家好,我是洋子 最近在做单接口的性能测试比较多,在压测过程发现了一个比较有意思的问题,拿出来和大家分享一下 背景是这样的,最近在搞线上的抽奖活动,压测的对象是一个抽奖接口,主要的逻辑见程序的流程…

Spring ioc容器

Spring ioc容器 导入 spring 容器包 使用 ioc 容器之前,需要先导入 Spring 的包 在 spring maven中下载 spring maven 网址:Maven Repository: spring (mvnrepository.com) 搜索 spring 找到 Spring Web MVC点击 spring-webmvc 进入 选择一个版本号点击&#x…

Ocean Optics USB2000光谱仪无法在Win10系统运行

1、问题描述 USB2000型光谱仪,由于生产年代过于久远,虽然能被Win10系统识别,但是驱动程序安装完成后依然报错, 提示:该设备无法启动。(代码 10) 请求USB BOS 描述符失败。 运行SpectraSuite软件…

ETLCloud社区版与Kettle对比分析

ETLCloud社区版本与Kettle社区版本都有什么优势和劣势? Pentaho Data Integration(PDI),也称为Kettle,是一款开源的数据集成工具,国内有很多企业都选择kettle作为数据清洗工具。以下是kettle的主要特点和优势: 广泛的…

python 绘制箱型图一些技巧

引言 本篇是之前有一个需求,需要用python来画箱型图,但要求很多,所以我也不断再版,今天突然想起来这个东西可以总结一下,正好马上得思考下一步做啥了,有足够的空闲时间,所以准备把一些基础概念…

【笔试强训day48】顺时针打印矩阵、左右最值最大差

博主简介:想进大厂的打工人博主主页:xyk:所属专栏: 笔试强训专栏 笔试强训 目录 文章目录 一、选择题 1.1 10.1.0.1/17的广播地址是( ) 1.2 网络地址172.16.22.38/28 请写出此地址的子网ID以及广播地址,此地址所处子网…

[2019“好贷杯“风控能力挑战赛一等奖] 基于神经网络算法的A股市场多因子选股的研究

本论文为 “2019年中国高校风险管理与控制能力挑战赛” 实际参赛作品,获得一等奖。 本论文体现了较好的数学建模思想和写作,所以将论文和完整代码进行了开源,方便与大家交流。

NetSuite SuiteTax之中国影响

这篇是还账。3个月前林师傅给的一个题目,陆陆续续的学习,一直没有弄完,直到今朝。 SuiteTax是2018年GA的一个重大功能,是NetSuite面向国际市场的一个标志动作。它将过去以美国为中心的税务功能,转向为国际市场服务。只…

xhs-xs webmsxyw分析

近期又更新了,先是改了x-s生成,然后又加上了a1校验。 后面可能会全参校验,比如再加上gid、deviceId、profileData、x-s-common、smidV2之类。 估计以后不能写xhs了,大家且看且珍惜吧。之前相关的文章都被下架了 危!…

C语言扫雷小游戏

扫雷小游戏 一,扫雷游戏的理解和整体思路1. 扫雷游戏的玩法2.写扫雷小游戏的整体思路 二,函数功能的实现模块1.宏定义2.打印菜单3.初始化雷盘4.打印雷盘5.布置雷6.玩家排雷6.1 显示该坐标有几个雷的函数6.2雷盘展开函数的实现 三.最终扫雷游戏的的实现1.…

AI绘画Stable Diffusion安装、使用教程 整合包下载

安装Stable Diffusion webui 效果图: 1.准备工作 在下载 AI 绘画工具前,电脑上需要提前下载一些运行的环境 1.下载python、git 首先本地机器最好是英伟达的 N 卡,并且至少需要 4GB 显存才能在本地运行,当然,A 卡也是…

微服务开发系列——第一篇:项目搭建(保姆级教程)

总概 A、技术栈 开发语言:Java 1.8数据库:MySQL、Redis、MongoDB、Elasticsearch微服务框架:Spring Cloud Alibaba微服务网关:Spring Cloud Gateway服务注册和配置中心:Nacos分布式事务:Seata链路追踪框架…

【CH32】| 00——开发环境搭建 | 软件安装 | 资料及工具下载

系列文章目录 TODO 文章目录 1. 简介2. 下载软件3. 安装4. 资料及工具下载4.1 芯片数据手册/参考手册4.2 评估(开发)板原理图/demo4.3 烧录软件4.3.1 isp串口一键下载4.3.2 WCH-LINK Utility烧录 4.4 WCH LINK相关资料/驱动安装4.4.1 WCH LINK相关资料4.4.2 WCH LINK驱动安装 5…

摆摊卖网红气球怎么样?

本章主要介绍一下最近网红气球: 最近看到很多摆摊的抖音视频,都在说卖气球很好,成本低,收益高,所以调研了一下,网红气球分好几种: a,飘空气球; b.手持网红气球 c.青蛙 首先介绍飘空…

初始python

初始python 缘由 ​ 对于python,相比大家并不陌生,Python是一种高级的、解释性编程语言,它具有简洁的语法和强大的内置函数,适用于广泛的应用领域,例如运维,Web开发,数据科学,人工智能等。Pyt…

JVM基础学习---1、JVM总体机制、类加载机制

1、JVM总体机制 1.1 JVM概念 JVM:Java Virtual Machine,翻译过来是Java虚拟机。 JRE:Java Runtime Environment,翻译过来是Java运行时环境。 JDK:Java Development Ki JDK:Java Development Kits&#…

Mysql字符集

1、修改MySQL5.7字符集 我们在新建数据库时(Navicat)界面时会遇到这两个选项,字符集和排序规则 在MySQL 8.0版本之前,MySQL 5.7 默认的客户端和服务器都用了 latin1 ,而latin1是不包含中文的,所以保存中文…