Selenium常用自动化函数

博主主页: 码农派大星.
数据结构专栏:Java数据结构
数据库专栏:数据库
JavaEE专栏:JavaEE
软件测试专栏:软件测试
关注博主带你了解更多知识

目录
1.元素的定位
1.1 定位步骤
1,要想定位,就先打开开发者工具
2,先点击左上角图标
1.2 cssSelector
1.3 xpath
2.操作测试对象
2.1 点击/提交对象
2.2 模拟按键输⼊
2.3 清除⽂本内容
2.4 获取⽂本信息
2.5 获取当前⻚⾯标题
2.6获取当前⻚⾯URL
3.窗⼝
3.1 窗⼝设置⼤⼩
3.2 窗⼝切换
3.3 屏幕截图
3.4关闭窗⼝
4、等待
4.1 强制等待
4.2 隐式等待
4.3 显⽰等待
优点:
缺点:
5.浏览器导航
1,打开⽹站
2,浏览器的前进、后退、刷新
6. 弹窗
6.1警告弹窗
6.2 确认弹窗
6.3 提⽰弹窗
7. ⽂件上传
8.浏览器参数设置
1.设置⽆头模式
2.设置浏览器加载策略
在自动化测试中,编写常用的函数可以提高代码的复用性和可维护性。以下是一些在自动化测试中常用的函数示例,这些函数涵盖了常见的操作,如启动浏览器、定位元素、点击、输入文本、等待、断言等
1.元素的定位
Web自动化测试的核心确实是能够准确找到页面上的元素,并在这些元素上执行操作。无论是点击按钮、输入文本、验证页面内容,还是执行其他交互,所有的操作都依赖于能够定位到这些元素
常⻅的元素定位⽅式⾮常多,如id,classname,tagname,xpath,cssSelector
常⽤的主要由cssSelector和xpath
1.1 定位步骤
1,要想定位,就先打开开发者工具
方式有三种:
鼠标右键->检查
Ctrl键+shift键+i
F12

2,先点击左上角图标

再点击要找的对应元素,就会出现定位

1.2 cssSelector
选择器的功能:选中⻚⾯中指定的标签元素
选择器的种类分为基础选择器和复合选择器,常⻅的元素定位⽅式可以通过id选择器和⼦类选择器来 进⾏定位
定位百度⾸⻚的“百度一下”元素,可以使⽤通过id选择器和⼦类选择器进⾏定位:"btn self-btn bg s_btn"
![]()

crtl+F搜索复制的selector ,就可以定位所在元素位置

1.3 xpath
XPath(XML Path Language)是一种在XML和HTML文档中查找信息的语言,它使用路径表达式来选定文档中的节点
获取HTML⻚⾯所有的节点
//*
获取HTML⻚⾯指定的节点
//[指定节点]
获取⼀个节点中的直接⼦节点
/
获取⼀个节点的⽗节点
..
实现节点属性的匹配
[@...]
采用xpath方式来定位百度⾸⻚的“百度一下”元素

crtl+F搜索复制的xpath ,就可以定位所在元素位置

2.操作测试对象
对元素进⾏操作,常⻅的操作,有点击、提交、输⼊、清 除、获取⽂本
2.1 点击/提交对象
click()
//找到百度⼀下按钮并点击driver.findElement(By.cssSelector("#su")).click();
2.2 模拟按键输⼊
sendKeys("")
driver.findElement(By.cssSelector("#kw")).sendKeys("2025大年三十倒计时计时器");
2.3 清除⽂本内容
输⼊⽂本后⼜想换⼀个新的关键词,这⾥就需要⽤到 clear()
driver.findElement(By.cssSelector("#kw")).sendKeys("我爱游戏");driver.findElement(By.cssSelector("#kw")).clear();driver.findElement(By.cssSelector("#kw")).sendKeys("我爱学习");
2.4 获取⽂本信息
getText();
List<WebElement> elements = driver.findElements(By.cssSelector("#hotsearch-content-wrapper > li > a > span.title-content-title"));for (int i = 0; i < 10;i++){System.out.println(elements.get(i).getText());}
不可以通过 getText() 获取到“百度⼀下按钮”上的⽂字“百度⼀下”
⽂本和属性值获取方式不一样,获取属性值需要使⽤⽅法getAttribute(" 属性名称 ") ;
2.5 获取当前⻚⾯标题
getTitle();
2.6获取当前⻚⾯URL
getCurrentUrl() ;
3.窗⼝
3.1 窗⼝设置⼤⼩
//窗⼝最⼤化
driver.manage().window().maximize();//窗⼝最⼩化
driver.manage().window().minimize();//全屏窗⼝
driver.manage().window().fullscreen();//⼿动设置窗⼝⼤⼩
driver.manage().window().setSize(new Dimension(1024, 768));
3.2 窗⼝切换
1)获取当前⻚⾯句柄: driver.getWindowHandle();
2)获取所有⻚⾯句柄: driver.getWindowHandles();
3)切换当前句柄为最新⻚⾯
//点击新闻driver.findElement(By.cssSelector("#s-top-left > a:nth-child(1)")).click();String curHandle = driver.getWindowHandle();Set<String> allHandle = driver.getWindowHandles();for(String handle : allHandle){if (handle != curHandle) {//切换页面driver.switchTo().window(handle);}}//测试百度新闻首页driver.findElement(By.cssSelector("#city_name"));
3.3 屏幕截图
屏幕截图⽅法需要额外导⼊包:
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency>
void Screen (String str) throws IOException {//屏幕截图SimpleDateFormat sim1 = new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat sim2 = new SimpleDateFormat("HHmmss");String dirTime = sim1.format(System.currentTimeMillis());String fileTime = sim1.format(System.currentTimeMillis());String filename = "./src/test/image/" + dirTime +"/" + str +"-"+fileTime+".png";System.out.println("filename:"+filename);File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);//srcFile放到指定位置FileUtils.copyFile(srcFile,new File(filename));}
3.4关闭窗⼝
driver.close();
注意:窗⼝关闭后 driver 要重新定义
4、等待
4.1 强制等待
Thread.sleep();
优点:使⽤简单,调试的时候⽐较有效,易理解
缺点:影响运⾏效率,浪费⼤量的时间
4.2 隐式等待
隐式等待是⼀种智能等待,他可以规定在查找元素时,在指定时间内不断查找元素。如果找到则代码 继续执⾏,直到超时没找到元素才会报错
implicitlyWait () ;
参数:Duration类中提供的毫秒、秒、分钟等⽅法
//隐式等待5秒
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
隐式等待作⽤域是整个脚本的所有元素。即只要driver对象没有被释放掉(driver.quit()),隐式等待 就⼀直⽣效。
4.3 显⽰等待
显⽰等待也是⼀种智能等待,在指定超时时间范围内只要满⾜操作的条件就会继续执⾏后续代码
new WebDriverWait(driver, Duration.ofSeconds(3)).until($express);
• elementToBeClickable(By locator)‒⽤于检查元素的期望是可⻅的并已启⽤,以便您可以单击它。
• textToBe (Bylocator , String str)-检查元素。
• presenceOfElementLocated(Bylocator)‒检查⻚⾯的DOM上是否存在元素。
• urlToBe(java.lang.String url)‒检查当前⻚⾯的URL是⼀个特定的URL
优点:
- 灵活性高:显式等待可以针对每个元素和场景设置不同的等待时间和条件。比如,等待元素可点击、可见、存在于DOM中等,这样可以根据实际情况灵活调整。
- 避免不必要的等待:只有在满足条件时才会继续执行,可以减少等待时间,不像隐式等待那样可能导致不必要的延迟。
- 精确控制:你可以选择不同的等待条件(如元素可见、可点击、元素存在等),适用于更复杂的场景,提供更高的控制权。
缺点:
- 需要更多的代码:每次使用显式等待时,都需要明确指定等待的条件和最大等待时间,可能导致代码更复杂。
- 可能增加代码冗余:在不同地方使用显式等待时,如果处理方式相似,可能会导致冗余的代码。
5.浏览器导航
1,打开⽹站
// 更⻓的⽅法driver.navigate().to("https://selenium.dev");// 简洁的⽅法driver.get("https://selenium.dev");
2,浏览器的前进、后退、刷新
driver.navigate().back();driver.navigate().forward();driver.navigate().refresh();
6. 弹窗
6.1警告弹窗

Alert alert = driver.switchTo.alert();//确认
alert.accept()
6.2 确认弹窗

Alert alert = driver.switchTo.alert();//确认
alert.accept()//取消
alert.dismiss()
6.3 提⽰弹窗

Alert alert = driver.switchTo.alert();alert.sendKeys("hello");alert.accept();alert.dismiss();
7. ⽂件上传
点击⽂件上传的场景下会弹窗系统窗⼝,进⾏⽂件的选择。 selenium⽆法识别⾮web的控件,上传⽂件窗⼝为系统⾃带,⽆法识别窗⼝元素 但是可以使⽤sendkeys来上传指定路径的⽂件,达到的效果是⼀样的
WebElement ele = driver.findElement(By.cssSelector("body > div > div >
input[type=file]"));ele.sendKeys("D:\\selenium2html\\selenium2html\\upload.html");
8.浏览器参数设置
1.设置⽆头模式
启用无头模式(没有显示的浏览器界面),这通常用于自动化测试
Chrome0ptions options =new Chrome0ptions();
options.addArguments("-headless");
2.设置浏览器加载策略
options.setPageLoadStrategy(PageLoadStrategy.NONE);
相关文章:
Selenium常用自动化函数
博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:数据库 JavaEE专栏:JavaEE 软件测试专栏:软件测试 关注博主带你了解更多知识 目录 1.元素的定位 1.1 定位步骤 1,要想定位,就先打开开发者工具 2,先点击左上角图标 1.2 cssSelector 1.3 xpath 2.操作测…...
【故障排除】ls: command not found 终端命令失效的解决办法
【TroubleShooting】ls: command not found 终端命令失效的解决办法 A Solution to Solve “Command not found” of Terminal on Mac 一直在使用心爱的MacBook Pro的Terminal,并且为她定制了不同的Profile。 这样,看起来她可以在不同季节,…...
OpenStack-Train版-Allinone自动化部署脚本
一、环境准备 操作系统:CentOS 7 或以上版本 建议配置: CPU:8 核或以上 内存:16 GB 或以上 磁盘:500 GB 或以上 网络配置: 确保虚拟机已配置静态 IP 地址 确保虚拟机可以正常访问外部网络 二、自动…...
12.翻转、对称二叉树,二叉树的深度
反转二叉树 递归写法 很简单 class Solution { public:TreeNode* invertTree(TreeNode* root) {if(rootnullptr)return root;TreeNode* tmp;tmproot->left;root->leftroot->right;root->righttmp;invertTree(root->left);invertTree(root->right);return …...
新电脑配置安装下载
1、谷歌浏览器 地址https://www.google.cn/chrome/ 下载安装即可。 2、nvm下载 下载地址:地址https://nvm.uihtm.com/#google_vignette nvm install 相对应的node版本 // 安装 nvm list 可以查看已下载的node版本 // 查看 nvm use 相对应的node版本号 // 使用 nv…...
数字孪生智慧停车管理可视化平台
采用图扑可视化技术搭建智慧停车管理平台,实现了全面的数据整合与实时监控,提升了停车场运营效率和用户体验。通过 HT 可视化界面,管理者能够实时观察和分析停车位使用情况,进行精准调度与优化决策。...
win10 llamafactory模型微调相关②
微调 使用微调神器LLaMA-Factory轻松改变大语言模型的自我认知_llamafactory 自我认知-CSDN博客 【大模型微调】使用Llama Factory实现中文llama3微调_哔哩哔哩_bilibili 样本数据集 (数据集管理脚本处需更改,见报错解决参考1) 自我认知微…...
车载测试工具 --- CANoe VH6501 进行Not Acknowledge (NAck) 测试
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…...
Mysql中存储引擎各种介绍以及应用场景、优缺点
概述 MySQL 提供了多种存储引擎,每种引擎有不同的特点和适用场景。以下是几种常见的 MySQL 存储引擎的详细介绍,包括它们的底层工作原理、优缺点,以及为什么 MySQL 默认选择某种引擎。 1. InnoDB 底层工作原理: 事务支持&#…...
使用 AlexNet 实现图片分类 | PyTorch 深度学习实战
前一篇文章,CNN 卷积神经网络处理图片任务 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 本篇文章内容来自于 强化学习必修课:引领人工智能新时代【梗直哥瞿炜】 使用 AlexNet 实现图片分类…...
Linux系统引导与服务管理
目录 一、Linux引导过程 1、引导过程概述 1.1、BIOS开机自检 1.2、MBR读取 1.3、加载引导加载程序(GRUB) 1.4、内核加载 1.5、初始化进程(init) 二、服务 2.1、服务类型 2.2、服务管理工具 三、运行级别 四、systemd …...
【Hadoop】大数据权限管理工具Ranger2.1.0编译
目录 编辑一、下载 ranger源码并编译 二、报错信息 报错1 报错2 报错3 报错4 一、下载 ranger源码并编译 ranger官网 https://ranger.apache.org/download.html 由于Ranger不提供二进制安装包,故需要maven编译。安装其它依赖: yum install gcc …...
宝珀(Blancpain):传承近三百年的机械制表传奇(中英双语)
宝珀(Blancpain):传承近三百年的机械制表传奇 在钟表行业中,宝珀(Blancpain) 作为世界上最古老的制表品牌,一直以其卓越的机械工艺、复杂功能腕表和对创新的坚持而闻名。自 1735 年成立以来&am…...
【Linux】Linux命令:crontab
目录 1、作用2、命令使用格式3、常用参数说明4、时程表4.1 格式4.2 常见问题处理 5、示例 1、作用 crontab命令用于对用户的时程表进行查看、删除、修改等操作。 用户的时程表是用于记录着要定期执行的程序。当安装完Linux操作系统启动后, cron服务会定期执行时程表…...
C++ 使用CURL开源库实现Http/Https的get/post请求进行字串和文件传输
CURL开源库介绍 CURL 是一个功能强大的开源库,用于在各种平台上进行网络数据传输。它支持众多的网络协议,像 HTTP、HTTPS、FTP、SMTP 等,能让开发者方便地在程序里实现与远程服务器的通信。 CURL 可以在 Windows、Linux、macOS 等多种操作系…...
浙江大华社招面试
下面是我之前社招面试大华时,面得是嵌入式Linux系统工程师,下面是我初试所被问到的问题分享给大家 毕业之后工作负责过哪些产品,工作负责哪些内容 Camera相关 1、调试sensor是多少像素 2、板子上怎么连接sensor 3、几LINE 4、每个LINE的data rate 是多少 ,单位是什么 5、图…...
多对多的增删改查
一 : 增 随机单号: /*** 文档就绪函数*/$(function () {//随机单号let number Math.floor(Math.random()*(9999-10001)1000);//取随机单号的值 固定格式输出$("#docNo").val(BSnumber);}) 开单日期: //处理开单日期$("#invoiceDate").val(new Date().to…...
vscode设置保存时自动缩进和格式化
参考博客 如何在 VSCode 中自动缩进你的代码 | Linux 中国 省流 使用 Ctrl Shift P 来打开命令模式,搜索 Open User Settings 并按下回车你需要搜索 Auto Indent,并在 “编辑器:自动缩进(Editor: Auto Indent)” 中选择 “全部(Full)”P…...
【练习】PAT 乙 1074 宇宙无敌加法器
题目 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的。而在PAT星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”。每个PAT星人都必须熟记各位数字的进制表,例如“……0527”就表示最…...
探店小程序:解锁商业新生态,定制未来
在数字化浪潮席卷全球的今天,商业的边界正在被重新定义。随着移动互联网技术的飞速发展,探店小程序作为一种新兴的商业模式,正以其独特的优势迅速成为连接商家与消费者的桥梁。我们刚刚为一家客户成功交付了一款集分销、分润、商业模式定制开…...
计算机视觉核心任务
1. 计算机视频重要分类 计算机视觉的重要任务可以大致分为以下几类: 1. 图像分类(Image Classification) 识别图像属于哪个类别,例如猫、狗、汽车等。 应用场景:物品识别、人脸识别、医疗影像分类。代表模型&#…...
【人工智能】如何在VSCode中使用DeepSeek?
文章目录 前言一、准备工作二、安装DeepSeek插件步骤1、扩展图标搜索DeepSeep2、安装DeepSeek插件3、使用测试DeepSeekBito文心一言 结论 前言 介绍在VSCode中调用DeepSeek插件工具,可以进行对话、编码。 一、准备工作 确保已经安装好了VSCode软件。 二、安装D…...
机器学习 - 进一步理解最大似然估计和高斯分布的关系
一、高斯分布得到的是一个概率吗? 高斯分布(也称为正态分布)描述的是随机变量在某范围内取值的概率分布情况。其概率密度函数(PDF)为: 其中,μ 是均值,σ 是标准差。 需要注意的是…...
Office/WPS接入DeepSeek等多个AI工具,开启办公新模式!
在现代职场中,Office办公套件已成为工作和学习的必备工具,其功能强大但复杂,熟练掌握需要系统的学习。为了简化操作,使每个人都能轻松使用各种功能,市场上涌现出各类办公插件。这些插件不仅提升了用户体验,…...
如何在Android Studio中开发一个简单的Android应用?
Android Studio是开发Android应用的官方集成开发环境(IDE),它提供了许多强大的功能,使得开发者能够高效地创建Android应用。如果你是Android开发的初学者,本文将引导你如何在Android Studio中开发一个简单的Android应用…...
第40天:Web开发-JS应用VueJS框架Vite构建启动打包渲染XSS源码泄露代码审计
#知识点 1、安全开发-VueJS-搭建启动&打包安全 2、安全开发-VueJS-源码泄漏&代码审计 一、Vue搭建创建项目启动项目 1、Vue 框架搭建->基于nodejs搭建,安装nodejs即可 参考:https://cn.vuejs.org/ 已安装18.3或更高版本的Node.js 2、Vue 创建…...
996引擎-问题处理:三职业改单职业
996引擎-问题处理:三职业改单职业 问题解决方案顺便补充点单性别设置补充:可视化配置表参考资料问题 目前的版本: 引擎版本号:2024.8.7.0 三端配套客户端:3.40.9 传统PC客户端:23.12.07 配套数据库:64_24.8.7.0此版本需要通过可视化配置表...
Lua语言的云计算
Lua语言在云计算中的应用 随着信息技术的迅猛发展,云计算已经成为现代计算的重要组成部分。云计算通过互联网将计算资源(如服务器、存储、数据库、网络等)进行动态调配和高效利用,极大地提高了资源利用率与开发效率。在众多编程语…...
[数据结构] Set的使用与注意事项
目录 Set的说明 常见方法说明 注意事项 TreeSet使用案例 Set的说明 Set与Map主要的不同有两点: Set是继承自Collection的接口类,Set中只存储了Key. 常见方法说明 方法解释boolean add(E e)添加元素,但重复元素不会被添加成功void clear()清空集合boolean contains(Object…...
安当SLA操作系统登录双因素认证:全方位保障Windows系统登录安全
一、产品概述 在当今数字化时代,Windows系统面临着诸多安全挑战,如弱口令问题等。安当SLA(System Login Agent)作为一款强大的双因素登录认证产品,通过支持OTP动态口令和USBKey硬件令牌认证,有效解决多种W…...
