selenium自动化测试入门 —— Alert/Confirm/Prompt 弹出窗口处理!
一、Alert/Confirm/Prompt弹出窗口特征说明
Alert弹出窗口:
提示用户信息只有确认按钮,无法通过页面元素定位,不关闭窗口无法在页面上做其他操作。
Confirm 弹出窗口:
有确认和取消按钮,该弹出窗口无法用页面元素定位,不关闭窗口无法在页面上做其他操作。
Prompt弹出窗口:
有输入框、确认和取消按钮,该弹出窗口无法用页面元素定位,不关闭窗口无法在页面上做其他操作。
注意:3种窗口为浏览器自带的窗口,该窗口无法定位到元素,能定位到元素需要使用WebElement操作。
二、Alert/Confirm/Prompt弹出窗口操作
第一步:需要获取弹出窗口,两种方法 与Alert(driver)
alert=driver.switch_to.alert
或
-
from selenium.webdriver.common.alert import Alert
-
alert=Alert(driver)
第二步:对获取到的窗口进行操作,常用方法如下:
alert.text() # 获取窗口信息alert.accept() # 确认alert.dismiss() # 取消alert.send_keys(keysToSend) # 输入信息
alert.authenticate(username, password) # 用户认证信息登录,已有确认操作
三、实例说明
创建下面3个html文件
alertTest.html
<html><head><title>Alert Test</title><meta http-equiv="content-type" content="text/html; charset=UTF-8"/></head><script type="text/javascript">function showAlert(){alert(document.from1.t1.value);}function showMultilineAlert(){alert("你必须纠正以下错误:\n你必须输入XXXX.\n你必须做XXXX.\n你必须XXXX");}</script><body><h2>Alert Test</h2><form name="from1"><input type="text" name="t1" value="可以输入 Alert 信息"><br><br><input type="button" name="button1" value="点击Alert获取输入框信息" onclick="showAlert()"><br><br><input type="button" name="button2" value="Alert自带多行文本信息" onclick="showMultilineAlert()"><br></form></body></html>
confirmTest.html
<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"/><title>Confirm Test</title></head><script type="text/javascript">function showConfirm(){var t1 = document.from1.t1;if (confirm("请点击确认或取消")){t1.value = "确认";}else{t1.value = "取消";}}</script><body><h2>Confirm Test</h2><form name="from1"><input type="button" name="button1" value="点击Confirm按钮" onclick="showConfirm()"><br><br><input type="text" name="t1"></form></body></html>
promptTest.html
<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"/><title>Prompt Test</title></head><script type="text/javascript">function showPrompt(){var t1 = document.from1.t1;t1.value = prompt("请输入信息,信息将填入页面输入框.");}</script><body><h2>Prompt Test</h2><form name="from1"><input type="button" name="button1" value="点击Prompt按钮" onclick="showPrompt()"><br><br><input type="text" name="t1"></form></body></html>
示例1:Alert弹窗获取文本与确认操作
from selenium import webdriverfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.support.expected_conditions import alert_is_presentfrom selenium.webdriver.common.alert import Alertdriver = webdriver.Chrome()driver.get(r'E:\XXX\alertTest.html')driver.find_element_by_name('button1').click() # 点击第一个按钮WebDriverWait(driver, 5).until(alert_is_present()) # 等待弹出窗口出现alert = driver.switch_to.alert # 获取弹出窗口text1 = alert.text # 获取窗口文本信息print(text1) # 打印窗口文本信息alert.accept() # 确认print('----------')driver.find_element_by_name('button2').click() # 点击第二个按钮WebDriverWait(driver, 5).until(alert_is_present()) # 等待弹出窗口出现alert = Alert(driver) # 获取弹出窗口text1 = alert.text # 获取窗口文本信息print(text1) # 打印窗口文本信息alert.accept() # 确认driver.quit()
注意:WebDriverWait(driver, 5).until(alert_is_present()) 加上这个可提高代码的可靠性
示例2:Comfirm弹窗获取文本、确认、取消操作
driver = webdriver.Chrome()driver.get(r'E:\XXX\confirmTest.html')driver.find_element_by_name('button1').click() # 点击按钮WebDriverWait(driver, 5).until(alert_is_present()) # 等待弹出窗口出现alert = driver.switch_to.alert # 获取弹出窗口print(alert.text) # 打印窗口信息alert.accept() # 确认time.sleep(2)driver.find_element_by_name('button1').click() # 点击按钮WebDriverWait(driver, 5).until(alert_is_present()) # 等待弹出窗口出现alert = driver.switch_to.alert # 获取弹出窗口alert.dismiss() # 取消time.sleep(2)driver.quit()
示例3:Prompt 弹窗获取文本、输入内容、确认操作
driver = webdriver.Chrome()driver.get(r'E:\XXX\promptTest.html')driver.find_element_by_name('button1').click() # 点击按钮WebDriverWait(driver, 5).until(alert_is_present()) # 等待弹出窗口出现alert = Alert(driver) # Alert 获取弹出窗口alert.send_keys('selenium Alert弹出窗口输入信息') # 输入信息alert.accept() # 确认time.sleep(2)driver.quit()
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
相关文章:

selenium自动化测试入门 —— Alert/Confirm/Prompt 弹出窗口处理!
一、Alert/Confirm/Prompt弹出窗口特征说明 Alert弹出窗口: 提示用户信息只有确认按钮,无法通过页面元素定位,不关闭窗口无法在页面上做其他操作。 Confirm 弹出窗口: 有确认和取消按钮,该弹出窗口无法用页面元素定…...
探索JavaScript 18:新特性全解析
JavaScript,作为全球最广泛使用的编程语言之一,每年的更新都备受开发者社区的关注。2023年,JavaScript的新版标准——ECMAScript 2023(也称为JavaScript 18)引入了多项激动人心的新特性,这些特性不仅优化了…...

Python第二语言(七、Python模块)
目录 1. 什么是模块 2. 基本语法 2.1 模块的导入方式 2.2 基本语法 import 模块名 2.3 基本语法 from 模块名 import 功能名 2.4 基本语法as 别名 3. 自定义模块 4. 调用自定义模块时,如何让其模块中的函数不被调用(__name__) 5. 调…...
介绍单例模式
描述 保证一个类只有一个实例,并且提供一个全局访问点 场景: 重量级的对象,不需要多个实例,如线程池,数据库连接池 实现 1. 懒汉模式 延迟加载的方式 只有在真正使用的时候,才开始实例化线程安全问题…...

【C++修行之道】类和对象(五)日期类的实现、const成员、取地址及const和取地址操作符重载
目录 一、 日期类的实现 Date.h 1.1 GetMonthDay函数(获取某年某月的天数) 问:这个函数为什么不和其他的函数一样放在Date.cpp文件中实现呢? 1.2 CheckDate函数(检查日期有效性)、Print函数(…...

来腾讯第4天,我已经焦虑昏了啊!
大家好,我是白露啊。 今天在看到一个实习生在抱怨,给我笑惨了。 标题是:“腾讯实习第4天,焦虑昏了”! 他写道:“怎么办啊牛爷爷们,什么都不会。业务看不懂,文档看不懂,…...
MacOS升级ruby版本
MacOS自带ruby版本是2.x,可以通过“ruby -v”查看版本号 $ ruby -v ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]homebrew安装的ruby版本号可以通过“brew info ruby”命令参看 $ brew info ruby > ruby: stable 3.3.2 (bottled)…...

【MySQL数据库基础】
🌈个人主页:努力学编程’ ⛅个人推荐:基于java提供的ArrayList实现的扑克牌游戏 |C贪吃蛇详解 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 …...

QT系列教程(9) 主窗口学习
简介 任何界面应用都有一个主窗口,今天我们谈谈主窗口相关知识。一个主窗口包括菜单栏,工具栏,状态栏,以及中心区域等部分。我们先从菜单栏说起 菜单栏 我们创建一个主窗口应用程序, 在ui文件里的菜单栏里有“在这里输入”的一个…...

【C++进阶】深入STL之 栈与队列:数据结构探索之旅
📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:模拟实现list与迭代器 🌹🌹期待您的关注 🌹🌹 ❀stack和queue Ǵ…...

SpringBoot发邮件服务如何配置?怎么使用?
SpringBoot发邮件需要的参数?邮件发送性能如何优化? 在SpringBoot项目中配置发邮件服务是一个常见的需求,它允许我们通过应用程序发送通知、验证邮件或其他类型的邮件。AokSend将详细介绍如何在SpringBoot中配置发邮件服务。 SpringBoot发邮…...

AutoCAD Mechanical机械版专业的计算机辅助设计软件安装包下载安装!
AutoCAD机械版作为一款专业的计算机辅助设计软件,不仅具备卓越的二维绘图功能,更是拥有令人瞩目的3D建模工具,为机械设计师们提供了前所未有的创作空间。 在AutoCAD机械版的3D建模环境中,用户可以借助一系列简洁明了的命令&#…...
json.load报错AttributeError: ‘str‘ object has no attribute ‘load‘
with open(json_file, r) as f:data json.load(f)要写个简单的数据处理脚本,报错AttributeError: ‘str’ object has no attribute ‘load’,查看了一下,路径正确,查了半天博客,不知道错在哪里。 回头一看 jsons_pa…...
单词记忆(第二周)
transplant: trans - plant 移植 perceive: per - ceive 察觉 paraphrase: para - ph - rase 释义 prospect: pro - s - pect 前景 access: ac - cess 进入,通道,访问 generous; gene - rous 慷慨的,丰富的 lecture: lec - ture 讲座 …...

RAG:如何从0到1搭建一个RAG应用
通过本文你可以了解到: 什么是RAG?如何搭建一个RAG应用?目前开源的RAG应用有哪些? 大模型学习参考: 1.大模型学习资料整理:大模型学习资料整理:如何从0到1学习大模型,搭建个人或企业…...
leetcode:67二进制求和
题目链接:67. 二进制求和 - 力扣(LeetCode) class Solution { public:string addBinary(string a, string b) {int stralen a.size(), strblen b.size();int curtc;int Maxlen max(stralen, strblen);vector<int> stra;vector<i…...
大模型日报2024-06-10
大模型日报 2024-06-10 大模型资讯 无需矩阵乘法的语言模型在亿参数规模上表现优异 摘要: 研究表明,无需矩阵乘法的语言模型在亿参数规模上仍能保持顶级性能。这一发现挑战了传统神经网络依赖矩阵乘法的观点,展示了在GPU优化之外的新可能性。 博弈论助力…...

【博士每天一篇文献-综述】Modularity in Deep Learning A Survey
阅读时间:2023-12-8 1 介绍 年份:2023 作者:孙浩哲,布朗克斯医疗卫生系统 会议: Science and Information Conference 引用量:4 论文主要探讨了深度学习中的模块化(modularity)概念…...

Sentinel不使用控制台基于注解限流,热点参数限流
目录 一、maven依赖 二、控制台 三、基于注解限流 四、热点参数限流 五、使用JMeter验证 一、maven依赖 需要注意,使用的版本需要和你的SpringBoot版本匹配!! Spring-Cloud直接添加如下依赖即可,baba已经帮你指定好版本了。…...
HTML做成一个端午节炫酷页面
做成端午节页面之前,先了解一下端午节的由来: 1.起源与历史: 端午节起源于中国,始于春秋战国时期,至今已有2000多年历史。 最初是古代百越地区(长江中下游及以南一带)崇拜龙图腾的部族举行图…...

测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...