selenium自动化测试入门 —— Alert/Confirm/Prompt 弹出窗口处理!

news2024/11/26 10:18:49

一、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) # 用户认证信息登录,已有确认操作

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

三、实例说明

创建下面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 webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support.expected_conditions import alert_is_present
from selenium.webdriver.common.alert import Alert

driver = 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()

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

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

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

相关文章

GZ035 5G组网与运维赛题第9套

2023年全国职业院校技能大赛 GZ035 5G组网与运维赛项&#xff08;高职组&#xff09; 赛题第9套 一、竞赛须知 1.竞赛内容分布 竞赛模块1--5G公共网络规划部署与开通&#xff08;35分&#xff09; 子任务1&#xff1a;5G公共网络部署与调试&#xff08;15分&#xff09; 子…

不可不知的项目管理策略:十大方法论深度剖析

深入了解项目管理的十大方法论&#xff0c;包括敏捷、六西格玛、看板等&#xff0c;并探讨它们各自的优势和适用场景。本文为您提供全面的指南&#xff0c;帮助您选择最适合您项目和团队的方法论&#xff0c;提升工作效率和项目成功率。 一、什么是项目管理方法论 项目管理方法…

Rust学习日记(一)Cargo的使用

前言&#xff1a; 这是一个系列的学习笔记&#xff0c;会将笔者学习Rust语言的心得记录。 当然&#xff0c;这并非是流水账似的记录&#xff0c;而是结合实际程序项目的记录&#xff0c;如果你也对Rust感兴趣&#xff0c;那么我们可以一起交流探讨&#xff0c;使用Rust来构建程…

js替换字符串中的某个字符

let startDate2023/10/30 let strstartDate.replace(/\//g,"-") console.log(startDate,startDate) console.log(str,str)

解决安装pytorch错误

问题&#xff1a; (yanzhi) C:\Users\17648>pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 Looking in indexes: https://download.pytorch.org/whl/cu121 ERROR: Could not find a version that satisfies the requirem…

【vscode远程开发】使用内网穿透实现在公网环境下远程访问

文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 前言 远程…

柯桥日常英语培训,英语中参加商务会议需要注意什么?

PART 01 Be prepared. 做好准备。 Have the agenda, a notebook and pen, business cards and any other documents you may need ready. Determine what you can do beforehand to be ready to join in on the discussion. 准备好议程、笔记本和笔、名片以及其他可能需要的…

做海外问卷调查有什么答题技巧和方法?

大家好&#xff0c;我是橙河老师&#xff0c;这篇文章聊一聊做海外问卷调查有什么答题技巧和方法&#xff1f; 海外问卷调查&#xff0c;其实就是一些外国公司&#xff0c;对外发放的有偿市场调查问卷&#xff0c;目的是收集消费者的意见和反馈&#xff0c;我们只要按照要求去…

windows搭建Cobalt strike

使用cobaltstrike 3.14版本 window10搭建服务器 默认端口可以修改的 window10搭建客户端 双击客服端bat运行连接 监听器 windows/beacon为内置监听器&#xff0c;包括dns、http、https、smb、tcp、extc2六种方式的监听器&#xff1b;windows/foreign为外部监听器 wndows/be…

酒旅服务环境展示预约小程序的效果

酒旅业的需求度一直很高&#xff0c;交通便利又没有其它因素影响&#xff0c;酒店、景区、旅行社等生意增长迅速&#xff0c;而在实际运用中&#xff0c;随着线上化程度加快&#xff0c;传统酒旅经营企业也会面临一些痛点&#xff0c;如品牌传播、引流拓客、转化复购、内容承载…

FMC子卡解决方案:FMC214-基于FMC兼容1.8V IO的Full Camera Link 输出子卡

FMC214-基于FMC兼容1.8V IO的Full Camera Link 输出子卡 一、板卡概述   基于FMC兼容1.8V IO的Full Camera Link 输出子卡支持Base、Middle、Full Camera link信号输出&#xff0c;兼容1.8V、2.5V、3.3V IO FPGA信号输出。适配xilinx不同型号开发板和公司内部各FMC载板。北…

国标GB28181如何实时视频播放

简述 视频流媒体安防监控国标GB28181平台LiveMedia视频能力丰富&#xff0c;部署灵活&#xff0c;便捷易用既能作为业务平台使用&#xff0c;也能作为安防监控视频管理层被业务管理平台调用。国标GB28181视频监控LiveMedia平台可提供流媒体接入、处理、转发等服务&…

YOLOv8改进:最新复现SOD-YOLOv8,助力小目标检测(Small Object Detection)

💡💡💡本文独家改进:改进点:1)backbone加入CBAM;2)backbone、neck连接处加入involution注意力;3)添加一个针对小物体的额外预测头,提升小目标检测性能; SOD-YOLOv8 | 亲测在多个数据集能够实现大幅涨点,尤其在VisDrone-2019涨点显著, VisDrone-2019-DET 数…

Modelsim 用户手册(1)——Introduction

目录 一、操作结构和流程&#xff08; Operational Structure and Flow&#xff09; 二、仿真任务概述&#xff08;Simulation Task Overview&#xff09; 三、仿真基本步骤&#xff08; Basic Steps for Simulation&#xff09; 3.1 基本概念 3.1.1 文件和库映射&#xf…

Jetpack:026-Jetpack中的Slider

文章目录 1. 概念介绍2. 使用方法3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了Jetpack多点触控相关的内容&#xff0c;本章回中 主要介绍Slider。闲话休提&#xff0c;让我们一起Talk Android Jetpack吧&#xff01; 1. 概念介绍 我们在本章回…

MATLAB R2023a下载链接及软件安装教程

先解释下什么是A什么是B&#xff0c;省的有些小菜们总问。 a是上半年&#xff0c;b是下半年版本&#xff0c;但是有些小弱们总是觉得只要是b一定功能多&#xff0c;这不一定的&#xff0c;同年版本b比a可能稍微全点&#xff0c;不同年的&#xff0c;比如21b&#xff0c;22a&am…

如何使用Javascript实现缓动特效

什么是缓动特效 虽然缓动特效这个词你可能没有听说过&#xff0c;但是绝大部分人都使用过。最典型的场景是在实现动画的过程中&#xff0c;无论是早期的jQuery还是CSS3里的transition&#xff0c;都允许你添加一个缓动特效参数&#xff0c;例如 linear, ease-in, ease-out等等…

云安全—etcd攻击面

0x00 前言 本篇还是一样&#xff0c;先来说一说etcd是什么&#xff0c;干啥的&#xff0c;然后再来看看etcd的攻击面到底有哪些&#xff0c;做一个抛砖引玉的作用&#xff0c;如有不妥之处还请斧正 0x01 etcd 依旧还是按照问问题的方式来进行阐述&#xff0c;因为学到的东西…

【一文搞定--web 自动化之文件上传】

在做web自动化时&#xff0c;我们经常会碰到一些场景需要进行文件上传&#xff0c;而文件上传打开的窗口属于windows控件&#xff0c;通过Selenium是操作不了的&#xff0c;此篇文章给大家介绍几种实现方法。 前言 方法一&#xff1a;sendKeys 前提条件&#xff1a;文件上传元…

51单片机电子钟闹钟温度LCD1602液晶显示设计( proteus仿真+程序+原理图+设计报告+讲解视频)

51单片机电子钟闹钟温度液晶显示设计( proteus仿真程序原理图设计报告讲解视频&#xff09; 1.主要功能&#xff1a;2.仿真3. 程序代码4. 原理图5. 设计报告6. 设计资料内容清单&&下载链接资料下载链接&#xff08;可点击&#xff09;&#xff1a; &#x1f31f;51单片…