【自动化测试】Selenium 核心函数速查:等待、导航、弹窗与浏览器配置
文章目录一、等待1.1 强制等待1.2 隐式等待1.3 显示等待二、浏览器导航三、弹窗3.1 警告弹窗确认弹窗3.2 提示弹窗四、文件上传五、浏览器参数设置一、等待通常代码执行的速度比页面渲染的速度要快为避免因为渲染过慢出现的自动化误报的问题可以使用selenium中提供的三种等待方法1.1 强制等待Thread.sleep()优点使用简单调试的时候比较有效。缺点影响运行效率浪费大量的时间。1.2 隐式等待隐式等待是一种智能等待它可以规定在查找元素时在指定时间内不断查找元素。如果找到则代码继续执行直到超时没找到元素才会报错。implicitlyWait()参数Duration类中提供的毫秒、秒、分钟等方法。示例//隐式等待1000毫秒driver.manage().timeouts().implicitlyWait(Duration.ofMillis(1000));//隐式等待5秒driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));隐式等待作用域是整个脚本的所有元素。即只要driver对象没有被释放掉(driver.quit())隐式等待就一直生效。优点智能等待作用于全局。1.3 显示等待显示等待也是一种智能等待在指定超时时间范围内只要满足操作的条件就会继续执行后续代码。new WebDriverWait(driver, Duration.ofSeconds(3)).until($express)$press涉及到selenium.support.ui.ExpectedConditions包下的ExpectedConditions类。返回值boolean。示例WebDriverWaitfoonewWebDriverWait(driver,Duration.ofSeconds(3))foo.until(ExpectedConditions.elementToBeClickable(By.cssSelector(#id)));ExpectedConditions预定义方法的一些示例elementToBeClickable(By locator)– 用于检查元素的期望是可见的并已启用以便您可以单击它。textToBe(Bylocator,String str)- 检查元素。presenceOfElementLocated(Bylocator)– 检查页面的 DOM 上是否存在元素。urlToBe(java.lang.String url)– 检查当前页面的 URL 是一个特定的 URL。WebDriverWaitwaitnewWebDriverWait(driver,Duration.ofSeconds(10));booleanispasswait.until(ExpectedConditions.textToBe(By.cssSelector(#s-top-left a:nth-child(1)),新闻));if(ispass){System.out.println(测试通过);}else{System.out.println(测试失败);}优点显示等待是智能等待可以自定义显示等待的条件操作灵活。缺点写法复杂。隐式等待和显示等待一起使用效果如何呢//隐式等待设置为5s,显示等待设置为10s,那么结果会是51015s吗?SimpleDateFormatsimnewSimpleDateFormat(yyyy-MM-dd HH:mm:ss);System.out.println(sim.format(System.currentTimeMillis()));driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));driver.findElement(By.cssSelector(#hotsearch-content-wrapper li:nth-child(1) a span.title-content));WebDriverWaitwaitnewWebDriverWait(driver,Duration.ofSeconds(10));try{wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(#hotsearch-content-wrapper li:nth-child(1) a span.title-content)));}catch(Exceptione){System.out.println(nosuelement!);}System.out.println(sim.format(System.currentTimeMillis()));结果重试多次最终打印的等待时间有10s、11s……结论不要混合隐式和显式等待可能会导致不可预测的等待时间。二、浏览器导航常见操作打开网站// 更长的方法driver.navigate().to(https://selenium.dev);// 简洁的方法driver.get(https://selenium.dev);浏览器的前进、后退、刷新driver.navigate().back();driver.navigate().forward();driver.navigate().refresh();三、弹窗弹窗是在页面中找不到任何元素的这种情况使用selenium提供的Alert接口。3.1 警告弹窗确认弹窗Alertalertdriver.switchTo.alert();//确认alert.accept()//取消alert.dismiss()3.2 提示弹窗Alertalertdriver.switchTo.alert();alert.sendKeys(hello);alert.accept();alert.dismiss();四、文件上传点击文件上传的场景下会弹出系统窗口进行文件的选择。selenium无法识别非web的控件上传文件窗口为系统自带无法识别窗口元素。但是可以使用sendkeys来上传指定路径的文件达到的效果是一样的。WebElementeledriver.findElement(By.cssSelector(body div div input[typefile]));ele.sendKeys(D:\\selenium2html\\selenium2html\\upload.html);就业课五、浏览器参数设置设置无头模式ChromeptionsoptionsnewChrome0ptions);options.addArguments(-headless);ChromeDriverdrivernewChromeDriver(options);driver.get(https://www.baidu.com);driver.quit();设置浏览器加载策略浏览器加载策略有三种策略类型核心行为适用场景优缺点NORMAL默认等待页面完全加载完成浏览器标签栏加载图标停止转动包含HTML、CSS、JS、图片、视频等所有资源加载完毕后才执行后续操作。对页面完整性要求高的场景如需要操作图片/视频相关元素、依赖外部资源渲染的元素。✅ 稳定性最高元素基本都已加载完成❌ 加载耗时最长脚本执行效率低。EAGER急切仅等待DOM树加载完成DOMContentLoaded事件触发不等待图片、视频、样式表等外部资源加载HTML解析完成后立即执行后续操作。大多数常规自动化测试场景只需操作DOM元素无需等待多媒体/样式资源。✅ 加载速度比NORMAL快兼顾效率与稳定性❌ 若元素依赖未加载的CSS/JS可能出现定位失败。NONE无等待不等待页面任何加载过程执行driver.get(url)后立即返回直接执行后续操作。需要手动精准控制加载时机的场景必须配合显式等待使用。✅ 速度最快完全掌控执行时机❌ 不手动加等待时几乎一定会定位不到元素稳定性最差。总结NORMAL全量等待最慢但最稳适合强依赖外部资源的场景EAGER仅等DOM速度适中是大多数自动化场景的首选NONE零等待最快但需手动加显式等待适合定制化加载控制。options.setPageLoadStrategy(PageLoadStrategy.NORMAL);options.setPageLoadStrategy(PageLoadStrategy.EAGER);options.setPageLoadStrategy(PageLoadStrategy.NONE);

相关新闻

普通数组-----缺失的第一个正数

普通数组-----缺失的第一个正数

&#x1f525;个人主页&#xff1a;Milestone-里程碑 ❄️个人专栏: <<力扣hot100>> <<C>><<Linux>> <<Git>><<MySQL>> &#x1f31f;心向往之行必能至 题目描述 给你一个未排序的整数数组 nums&#xff0c;请…

2026/7/6 16:13:24 阅读更多 →
AI应用架构师必看:虚拟教育系统中的计算机视觉架构

AI应用架构师必看:虚拟教育系统中的计算机视觉架构

AI应用架构师必看&#xff1a;虚拟教育系统中的计算机视觉架构 一、引入与连接&#xff1a;当虚拟教育遇到“视觉大脑” 凌晨三点&#xff0c;虚拟教育平台「智课空间」的架构师小李盯着屏幕皱起眉头——他设计的AI助教又误判了学生的“举手”动作&#xff1a;明明学生只是伸了…

2026/5/17 7:25:23 阅读更多 →
虚拟展厅AI训练数据从哪来?架构师设计高效数据标注平台实践

虚拟展厅AI训练数据从哪来?架构师设计高效数据标注平台实践

虚拟展厅AI的“数据燃料”指南&#xff1a;训练数据从哪来&#xff1f;如何搭建高效标注平台&#xff1f; 标题选项 虚拟展厅AI训练数据从哪来&#xff1f;架构师手把手教你搭建高效标注平台从数据到智能&#xff1a;虚拟展厅AI训练数据来源及标注平台设计实践虚拟展厅AI的数据…

2026/7/6 11:06:49 阅读更多 →

最新新闻

如何用Kotlin Multiplatform实现Android与iOS应用代码共享:Fruitties实战指南

如何用Kotlin Multiplatform实现Android与iOS应用代码共享:Fruitties实战指南

如何用Kotlin Multiplatform实现Android与iOS应用代码共享&#xff1a;Fruitties实战指南 【免费下载链接】kotlin-multiplatform-samples Samples showcasing the Kotlin Multiplatform Jetpack libraries 项目地址: https://gitcode.com/GitHub_Trending/ko/kotlin-multipl…

2026/7/6 19:12:49 阅读更多 →
EasyContext内存优化秘籍:DeepSpeed Zero3卸载策略详解

EasyContext内存优化秘籍:DeepSpeed Zero3卸载策略详解

EasyContext内存优化秘籍&#xff1a;DeepSpeed Zero3卸载策略详解 【免费下载链接】EasyContext Memory optimization and training recipes to extrapolate language models context length to 1 million tokens, with minimal hardware. 项目地址: https://gitcode.com/gh…

2026/7/6 19:12:49 阅读更多 →
UE4SS:解锁虚幻引擎游戏无限可能的终极修改工具指南

UE4SS:解锁虚幻引擎游戏无限可能的终极修改工具指南

UE4SS&#xff1a;解锁虚幻引擎游戏无限可能的终极修改工具指南 【免费下载链接】RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games 项目地址: https://gitcode.com/gh_mirrors/re/RE-UE4SS …

2026/7/6 19:08:46 阅读更多 →
如何安装和配置EnergyBar:10分钟快速上手教程

如何安装和配置EnergyBar:10分钟快速上手教程

如何安装和配置EnergyBar&#xff1a;10分钟快速上手教程 【免费下载链接】EnergyBar Supercharge your Macs Touch Bar. 项目地址: https://gitcode.com/gh_mirrors/en/EnergyBar 想要快速上手EnergyBar&#xff0c;让你的Mac Touch Bar变得更强大吗&#xff1f;Energy…

2026/7/6 19:08:46 阅读更多 →
如何快速入门Encog:5个简单步骤构建你的第一个神经网络

如何快速入门Encog:5个简单步骤构建你的第一个神经网络

如何快速入门Encog&#xff1a;5个简单步骤构建你的第一个神经网络 【免费下载链接】encog-java-core 项目地址: https://gitcode.com/gh_mirrors/en/encog-java-core Encog是一个强大的Java机器学习框架&#xff0c;专为构建和训练神经网络而设计。无论你是机器学习新…

2026/7/6 19:08:46 阅读更多 →
Linkora开发指南:如何为这款KMP应用贡献代码和新功能

Linkora开发指南:如何为这款KMP应用贡献代码和新功能

Linkora开发指南&#xff1a;如何为这款KMP应用贡献代码和新功能 【免费下载链接】Linkora Local-first multiplatform link organizer with optional self-hosted sync. 项目地址: https://gitcode.com/gh_mirrors/li/Linkora Linkora是一款基于Kotlin Multiplatform&a…

2026/7/6 19:06:45 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性&#xff1a;5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域&#xff0c;单元测试是保证代码质量的重要环节。当应用涉及数据库操作时&#xff0c;测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南&#xff1a;用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南&#xff1a;告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况&#xff1a;下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools&#xff1a;5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里&#xff0c;参与了关于混合后量子密码学的讨论&#xff0c;应付端点攻击找茬的人&#xff0c;还参与留言板讨论后&#xff0c;发现“威胁模型”对多数人仍是陌生概念&#xff0c;且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”&#xff1a;我理解的渗透测试到底是什么&#xff1f;每次看到新闻里说某个大公司的数据被“黑”了&#xff0c;或者某个网站被攻击导致服务瘫痪&#xff0c;你是不是和我一样&#xff0c;心里会冒出两个念头&#xff1a;一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻