测试——Selenium

内容大纲:

什么是自动化测试

什么是Selenium

Selenium工作原理

Selenium环境搭建

Selenium API

目录

1. 什么是自动化测试

2. 什么是Selenium

3. Selenium工作原理

4. Selenium环境搭建(java)

5. Selenium API

5.1 定位元素 

5.1.1 CSS选择器定位元素

5.1.2 XPath定位元素

5.1.3 标签定位元素

5.2 操作测试对象 

5.3 添加等待

5.3.1 强制等待sleep

5.3.2 隐式等待(更推荐)

5.3.3 显示等待

5.4 打印信息

5.4.1 打印title

5.4.2 打印url

5.5 浏览器的操作

5.5.1  浏览器最大化

5.5.2 设置浏览器的宽高

5.5.3 操作浏览器的前进、后退

5.5.4 控制浏览器滚动条

5.6 键盘事件

5.6.1 回车

5.6.2 组合 (A+C+V)

5.7 鼠标事件(右击)

5.8 窗口

5.9 截图

6. 几个小案例

6.1 定位一组元素

6.2 窗口定位

6.3 下拉框处理

6.4 定位弹窗

6.5 上传文件


1. 什么是自动化测试

将人工要做的测试工作进行转换,让代码去执行测试工作,这样是为了提高测试效率,提高测试产品的质量

2. 什么是Selenium

做UI自动化测试的一个工具

3. Selenium工作原理

 

三个角色:

  • 自动化脚本代码(在idea里面写的代码)
  • 驱动:有个这个驱动就可以对页面进行操作
  • 浏览器

4. Selenium环境搭建(java)

在此不详细说明......

引入的依赖:

        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.141.59</version></dependency>

 

 

 

5. Selenium API

5.1 定位元素 

5.1.1 CSS选择器定位元素

  • 类选择器: .class值(.s_ipt)
  • id选择器: #id值(#kw)
  • 父类选择器 子类选择器: 父类选择器表达式 子类选择器表达式(#s_kw_wrap #kw)
  • 标签选择器:标签名(form)

举例说明:

 

 ③


 

5.1.2 XPath定位元素

  • 相对路径+索引://form/span[1]/input
  • 相对路径+属性值://input[@class="s_ipt"]
  • 相对路径+通配符://*[@*="s_ipt"]
  • 相对路径+文本匹配://span[text()=""]

举例说明:

 

 


5.1.3 标签定位元素

 

问:CSS选择器和XPath选择器,,哪个效率更高?

CSS 


5.2 操作测试对象 

  • click点击对象

  • send_keys 在对象上模拟按键输入
  • clear 清楚对象输入的文本内容
  • submit 提交
  • text用于获取元素的文本信息 

getText和getAttribute: 

getText'获取的元素在:

getAttribute获取的元素是一个属性值:

问:submit和click之间的区别:

submit操作的元素需要放在form标签中,否则会报错

click没有这个限制(更推荐)

此时submit报错


5.3 添加等待

5.3.1 强制等待sleep

 

5.3.2 隐式等待(更推荐)

 

5.3.3 显示等待

 


5.4 打印信息

5.4.1 打印title

 

5.4.2 打印url

 

 


5.5 浏览器的操作

5.5.1  浏览器最大化

 

5.5.2 设置浏览器的宽高

 

5.5.3 操作浏览器的前进、后退

 

5.5.4 控制浏览器滚动条

 


5.6 键盘事件

5.6.1 回车

5.6.2 组合 (A+C+V)


5.7 鼠标事件(右击)


5.8 窗口

当前的窗口:

获取所有窗口:

切换窗口:

 


5.9 截图

引入依赖:

        <!-- https://mvnrepository.com/artifact/commons-io/commons-io --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.15.1</version></dependency>

 

6. 几个小案例

6.1 定位一组元素

描述:

 让矩形框的都勾上

private static void Page01(){WebDriver webDriver = new ChromeDriver();webDriver.get("http://localhost:63342/0720-test/Page/test01.html?_ijt=g2mlnu74s9004ua0282u8h05lg&_ij_reload=RELOAD_ON_SAVE");List<WebElement> webElements = webDriver.findElements(By.cssSelector("input"));for (int i = 0; i < webElements.size(); i++){if (webElements.get(i).getAttribute("type").equals("checkbox")){webElements.get(i).click();}}
}

6.2 窗口定位

描述:

点击click

private static void Page02() throws InterruptedException {WebDriver webDriver = new ChromeDriver();webDriver.get("http://localhost:63342/0720-test/Page/test02.html?_ijt=csarghoqcdtbu2pd8sdrhhka8v&_ij_reload=RELOAD_ON_SAVE");webDriver.switchTo().frame("f1");sleep(3000);webDriver.findElement(By.cssSelector("body > div > div > a")).click();
}

6.3 下拉框处理

描述:

选择其它

private static void Page03() throws InterruptedException {WebDriver webDriver = new ChromeDriver();//打开目标网页webDriver.get("http://localhost:63342/0720-test/Page/test03.html?_ijt=j61coa63ol45u8trp3tr5rjirr&_ij_reload=RELOAD_ON_SAVE");/*** 方法一:借助Select对象*/WebElement webElement = webDriver.findElement(By.cssSelector("#ShippingMethod"));sleep(3000);Select select = new Select(webElement);//通过序号选中选项,下标从0开始//select.selectByIndex(3);//sleep(3000);/*** 方法二:通过值*/select.selectByValue("8.34");}

6.4 定位弹窗

描述:

输入:某某.点击确认

 

private static void Page04() throws InterruptedException {WebDriver webDriver = new ChromeDriver();webDriver.get("http://localhost:63342/0720-test/Page/test04.html?_ijt=hfa18g211latukccpp96p1gl28&_ij_reload=RELOAD_ON_SAVE");sleep(3000);webDriver.findElement(By.cssSelector("body > button")).click();sleep(3000);//点击了弹窗里面的取消webDriver.switchTo().alert().dismiss();//点中弹窗webDriver.findElement(By.cssSelector("body > button")).click();String name = "momo";//输入某某webDriver.switchTo().alert().sendKeys("momo");sleep(3000);//弹窗确认webDriver.switchTo().alert().accept();//校验String text = webDriver.findElement(By.cssSelector("body > div:nth-child(5)")).getText();if (text.equals(name)){System.out.println("测试通过");}else {System.out.println("测试不通过");}
}

6.5 上传文件

描述:

选择文件之后:

private static void Page05() throws InterruptedException {WebDriver webDriver = new ChromeDriver();webDriver.get("http://localhost:63342/0720-test/Page/test05.html?_ijt=c69p92i1r4598lea74dko8r147&_ij_reload=RELOAD_ON_SAVE");sleep(3000);//上传文件webDriver.findElement(By.cssSelector("body > input[type=file]")).sendKeys("C:\\Users\\27695\\Desktop\\bit\\3.MySQL\\01 MySQL安装与配置.pdf");}

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

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

相关文章

k8s中部署nacos

1 部署nfs # 在k8s的主节点上执行 mkdir -p /appdata/download cd /appdata/download git clone https://github.com/nacos-group/nacos-k8s.git 将nacos部署到middleware的命名空间中 kubectl create namespace middleware cd /appdata/download/nacos-k8s # 创建角色 kub…

VScode连接虚拟机运行Python文件的方法

声明&#xff1a;本文使用Linux发行版本为rocky_9.4 目录 1. 在rocky_9.4最小安装的系统中&#xff0c;默认是没有tar工具的&#xff0c;因此&#xff0c;要先下载tar工具 2. 在安装好的vscode中下载ssh远程插件工具 3. 然后连接虚拟机 4. 查看python是否已经安装 5. 下载…

【状态估计】偏差,匹配和外点

我们都知道&#xff1a;对于状态的估计可能是有偏差的&#xff0c;特别是在运动模型或观测模型是非线性的情况下。在简单的立体相机的例子中&#xff0c;我们看到MAP方法相比于全贝叶斯方法来说是有偏差的。同时&#xff0c;我们也看到批量ML方法对于真实值来说也是有偏差的&am…

openEuler操作系统下Oracle 19c 从19.3补丁更新到19.17

Oracle 19c 从补丁19.3更新到19.17的过程涉及到多个步骤&#xff0c;包括备份、下载补丁、替换OPatch、验证清单信息、冲突检测、空间检测、应用补丁等。以下是一个概括性的流程&#xff0c;但请注意&#xff0c;具体步骤可能会根据实际的Oracle环境、补丁内容和Oracle的官方指…

【接口自动化_07课_Pytest+Excel+Allure完整框架集成_下】

目标&#xff1a;优化框架场景 1. 生成对应的接口关联【重点】 2. 优化URL基础路径封装【理解】 3. 利用PySQL操作数据库应用【理解】--- 怎么用python连接数据库、mysql 4. 通过数据库进行数据库断言【重点】 5. 通过数据库进行关联操作【重点】 一、接口关联&#xff1a…

【QAC】分布式部署下其他机器如何连接RLM

1、 文档目标 解决分布式部署下其他机器如何连接RLMLicense管理器。 2、 问题场景 分布式部署下QAC要在其他机器上单独运行扫描&#xff0c;必须先连接RLMLicense管理器&#xff0c;如何连接&#xff1f; 3、软硬件环境 1、软件版本&#xff1a;HelixQAC23.04 2、机器环境…

【算法/训练】:前缀和差分

&#x1f680; 前言&#xff1a; 前面我们已经通过 【算法/学习】前缀和&&差分-CSDN博客 学习了前缀和&&差分的效相关知识&#xff0c;现在我们开始进行相关题目的练习吧 1. 校门外的树 思路&#xff1a;给[0, n]的数组都标记为1&#xff0c;然后输出m行范围…

基于 PyTorch 的模型瘦身三部曲:量化、剪枝和蒸馏,让模型更短小精悍!

基于 PyTorch 的模型量化、剪枝和蒸馏 1. 模型量化1.1 原理介绍1.2 PyTorch 实现 2. 模型剪枝2.1 原理介绍2.2 PyTorch 实现 3. 模型蒸馏3.1 原理介绍3.2 PyTorch 实现 参考文献 1. 模型量化 1.1 原理介绍 模型量化是将模型参数从高精度&#xff08;通常是 float32&#xff0…

Elasticsearch:Retrievers 介绍 - Python Jupyter notebook

在今天的文章里&#xff0c;我是继上一篇文章 “Elasticsearch&#xff1a;介绍 retrievers - 搜索一切事物” 来使用一个可以在本地设置的 Elasticsearch 集群来展示 Retrievers 的使用。在本篇文章中&#xff0c;你将学到如下的内容&#xff1a; 从 Kaggle 下载 IMDB 数据集…

Linux云计算 |【第一阶段】SERVICES-DAY5

主要内容&#xff1a; 源码编译安装、rsync同步操作、inotify实时同步、数据库服务基础 实操前骤&#xff1a;&#xff08;所需tools.tar.gz与users.sql&#xff09; 1.两台主机设置SELinnx和关闭防火墙 setenforce 0 systemctl stop firewalld.service //停止防火墙 sy…

MySQL定时备份数据,并上传到oss

1.环境准备 1.安装阿里云的ossutil 2.安装mysql 2.编写脚本 脚本内容如下 #!/bin/bash # 数据库的配置信息&#xff0c;根据自己的情况进行填写 db_hostlocalhost db_usernameroot db_passwordroot db_namedb_root # oss 存贮数据的bucket地址 bucket_namerbsy-backup-buck…

软件更新的双刃剑:从”微软蓝屏”事件看网络安全的挑战与对策

引言 原文链接 近日&#xff0c;一场由微软视窗系统软件更新引发的全球性"微软蓝屏"事件震惊了整个科技界。这次事件源于美国电脑安全技术公司"众击"提供的一个带有"缺陷"的软件更新&#xff0c;如同一颗隐形炸弹在全球范围内引爆&#xff0c;…

Python面试宝典第17题:Z字形变换

题目 将一个给定字符串 s 根据给定的行数numRows &#xff0c;以从上往下、从左到右进行Z字形排列。比如&#xff1a;输入字符串为"PAYPALISHIRING"&#xff0c;行数为3时&#xff0c;排列如下。最后&#xff0c;你的输出需要从左往右逐行读取&#xff0c;产生出一个…

unity 实现图片的放大与缩小(根据鼠标位置拉伸放缩)

1创建UnityHelper.cs using UnityEngine.Events; using UnityEngine.EventSystems;public class UnityHelper {/// <summary>/// 简化向EventTrigger组件添加事件的操作。/// </summary>/// <param name"_eventTrigger">要添加事件监听的UI元素上…

DevExpress中文教程 - 如何在.NET MAUI应用中实现Material Design 3?

DevExpress .NET MAUI多平台应用UI组件库提供了用于Android和iOS移动开发的高性能UI组件&#xff0c;该组件库包括数据网格、图表、调度程序、数据编辑器、CollectionView和选项卡组件等。 获取DevExpress v24.1正式版下载 Material Design是一个由Google开发的跨平台指南系统…

HydraRPC: RPC in the CXL Era——论文阅读

ATC 2024 Paper CXL论文阅读笔记整理 问题 远程过程调用&#xff08;RPC&#xff09;是分布式系统中的一项基本技术&#xff0c;它允许函数在远程服务器上通过本地调用执行来促进网络通信&#xff0c;隐藏底层通信过程的复杂性简化了客户端/服务器交互[15]。RPC已成为数据中心…

【Hot100】LeetCode—279. 完全平方数

目录 题目1- 思路2- 实现⭐完全平方数——题解思路 3- ACM 实现 题目 原题连接&#xff1a;279. 完全平方数 1- 思路 思路 动规五部曲 2- 实现 ⭐完全平方数——题解思路 class Solution {public int numSquares(int n) {// 1. 定义 dpint[] dp new int[n1];//2. 递推公式…

论文学习记录之一种具有边缘增强特点的医学图像分割网络

标题&#xff1a;一种具有边缘增强特点的医学图像分割网络 期刊&#xff1a;电子与信息学报-&#xff08;2022年5月出刊&#xff09; 摘要&#xff1a;针对传统医学图像分割网络存在边缘分割不清晰、缺失值大等问题&#xff0c;该文提出一种具有边缘增强特点的医学图像分割网…

社交圈子小程序搭建-源码部署-服务公司

消息通知:当有新的消息、评论或回复时&#xff0c;用户需要收到系统的推送通知&#xff0c;以便及时查看和回复 活动发布与参加:用户可以在社交圈子中发布各种类型的活动&#xff0c;如聚餐、旅游、运动等。其他用户可以参加这些活动&#xff0c;并与组织者进行交流和沟通 社交…

C#初级——输出语句和转义字符

输出语句 在C#中&#xff0c;C#的输出语句是通过Console类进行输出&#xff0c;该类是一个在控制台下的一个标准输入流、输出流和错误流。使用该类下的Write()函数&#xff0c;即可打印要输出的内容。 Console.Write("Hello World!"); //在控制台应用中打印Hell…