Selenium切换窗口、框架和弹出框window、ifame、alert

一、切换窗口
#获取打开的多个窗口句柄
windows = driver.window_handles
#切换到当前最新打开的窗口
driver.switch_to.window(windows[-1])
#最大化浏览器
driver.maximize_window()
#刷新当前页面
driver.refresh()
二、切换框架frame
如存在以下网页:
<html lang="en">
<head>
<title>FrameTest</title>
</head>
<body>
<iframe src="a.html" id="frame1" name="myframe"></iframe>
</body>
</html>
可以使用4中方式切换frame
#1.用frame的index来定位,第一个是0
driver.switch_to.frame(0)
#2.用id来定位
driver.switch_to.frame("frame1")
#3.用name来定位
driver.switch_to.frame("myframe")
#4.用WebElement对象来定位
driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

三、切换alert()提示框
#1. 获取alert
driver.switchTo().alert()
#2.点确定
alert.accept()
#3.点取消
alert.dismiss()
#4.获取alert的内容
alert.getText()
以下是使用中的一个例子:
alert = driver.switch_to.alert #切到弹出框
print(alert.text)
a=alert.text
alert.accept()
return '添加成功!' in a
在Selenium中,可以使用以下方法来切换窗口、框架和弹出框:
- 切换窗口:
driver.switch_to.window(window_handle):通过窗口句柄(window handle)切换到指定的窗口。可以使用driver.window_handles获取所有窗口的句柄,然后通过索引或其他方式选择要切换的窗口。
- 切换框架(iframe):
driver.switch_to.frame(frame_reference):通过框架的名称或索引切换到指定的框架。可以使用框架的名称或索引来定位到框架,并切换到它。
- 处理弹出框(alert):
driver.switch_to.alert:切换到当前页面上的警告框(alert)。可以使用accept()接受警告框,点击确定按钮;使用dismiss()关闭警告框,点击取消按钮;使用send_keys(text)向警告框发送文本。
注意事项:
- 切换窗口和框架时,需要确保当前焦点在正确的上下文中。You可能需要先切换到默认内容,即主页面,然后再进行窗口或框架的切换。
- 在处理弹出框之前,需要等待弹出框的出现。可以使用显式等待来等待弹出框的出现。
示例代码:
python
# 切换窗口
main_window = driver.current_window_handle # 获取当前窗口句柄
new_window = driver.window_handles[1] # 假设有多个窗口,选择第二个窗口
driver.switch_to.window(new_window) # 切换到新窗口# 切换框架
driver.switch_to.frame("frame_name") # 通过框架名称切换
driver.switch_to.frame(0) # 通过索引切换# 处理弹出框
alert = driver.switch_to.alert
alert.accept() # 点击确定按钮
alert.dismiss() # 点击取消按钮
alert.send_keys("text") # 发送文本
以上是在Selenium中切换窗口、框架和处理弹出框的方法。根据具体情况,你可以选择适当的方法来实现你的测试需求。
END今天的分享就到此结束了,点赞关注不迷路~
相关文章:
Selenium切换窗口、框架和弹出框window、ifame、alert
一、切换窗口 #获取打开的多个窗口句柄 windows driver.window_handles #切换到当前最新打开的窗口 driver.switch_to.window(windows[-1]) #最大化浏览器 driver.maximize_window() #刷新当前页面 driver.refresh() 二、切换框架frame 如存在以下网页: <htm…...
QT linux下应用程序打包
一、应用程序app 1、应用程序的pro文件 2、 程序工作函数 3、app的UI界面 二、动态库lib 1、Lib类头文件 2、.cpp文件 三、对应用程序和动态库进行构建 1、对动态库进行qmake,然后进行构建 2、对应用程序进行qmake,然后进行构建 3、查看构建目录 四、编写脚本 …...
Java高级技术(单元测试)
一,概括 二,junit 三,案例 (1),实验类 package com.bilibili;public class Name {public static void main(String name) {if (name null){System.out.println("0");return;}System.out.print…...
leetCode 1080.根到叶路径上的不足节点 + 递归 + 图解
给你二叉树的根节点 root 和一个整数 limit ,请你同时删除树中所有 不足节点 ,并返回最终二叉树的根节点。假如通过节点 node 的每种可能的 “根-叶” 路径上值的总和全都小于给定的 limit,则该节点被称之为 不足节点 ,需要被删除…...
C++基础 -10- 类
类的格式 public:公共成员 类外可访问 protected:保护成员 类外不可访问 private:私有成员 类外不可访问 class base {public:int a;protected:int b;private:int c;};...
【软件测试】性能测试相关指标
性能测试 了解性能测试相关指标 1.什么是做性能测试 1.1 生活中遇到的软件性能问题 软件用着用着就不能用了,一看热搜,发现该软件的服务器崩崩溃了。 1.2 性能测试定义 测试人员借助性能测试工具,模拟系统在不同场景下,对应…...
Leetcode 2943. Maximize Area of Square Hole in Grid
Leetcode 2943. Maximize Area of Square Hole in Grid 1. 解题思路2. 代码实现 题目链接:2943. Maximize Area of Square Hole in Grid 1. 解题思路 这一题的话其实横轴和竖轴可以分开来独立考察,因为两者互不影响,我们最终的答案一定是两…...
qt 简单了解QHBoxLayout QVBoxLayout QFormLayout水平,垂直,表单布局管理器.
QHBoxLayout水平布局,QVBoxLayout垂直布局,QFormLayout表单布局管理器,是常用的布局管理器,是用代码编写应用界面必不可少的功能类. 1.tips 这里值得注意的是,2个单选按钮(QRadioButton)同时放进一个水平布局管理器(QHBoxLayout)中,相当于放进了一个分组器中,此时,2个单选按钮…...
springboot中4级配置文件优先级
springboot中4级配置文件优先级...
Python(八十九)函数的参数的内存分析
❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…...
西南科技大学C++程序设计实验二(类与对象一)
C++最大的特点就是面向对象,掌握它的几种基本性质还是好理解的,可以看我C++专栏的期末速成,希望对你们学习C++有帮助。 一、实验目的 1.理解简单类的定义、说明与使用 2.理解类中不同属性数据成员的访问特点 3.理解构造函数、析构函数的作用 重点:掌握类的定义与实现,…...
代码随想录二刷 |哈希表 |四数之和
代码随想录二刷 |哈希表 |四数之和 题目描述解题思路 & 代码实现 题目描述 18.四数之和 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nu…...
KMP算法【数据结构】
KMP算法 KMP算法是一种改进的字符串匹配算法 Next[j] k :一个用来存放子串返回位置的数组,回溯的位置用字母k来表示。其实就是从匹配失败位置,找到他前面的字符串的最大前后相等子串长度。默认第一个k值为-1(Next[0] -1),第二个k值为0(Next[1] 0),我…...
测开笔记--Typescript: 文件复制到指定目录
开发背景: 自动化开发语言使用的是TypeScript;框架用的是playwright。有个测试脚本需要先将几个文件复制粘贴到新建的项目文件夹下,系统会读取该文件,然后生成页面信息。 关键字:文件复制粘贴; 新建的项目…...
数字滚动vue-count-to
数字滚动 下载插件 npm i vue-count-to 使用 start-val 起始值,表示从什么值开始滚 end-val 终点值,表示要滚到多大值 duration 滚动事件,表示用多长时间来滚动 <countTo :start-val"0" :end-val"228" :duration&quo…...
扩散模型实战(十一):剖析Stable Diffusion Pipeline各个组件
推荐阅读列表: 扩散模型实战(一):基本原理介绍 扩散模型实战(二):扩散模型的发展 扩散模型实战(三):扩散模型的应用 扩散模型实战(四ÿ…...
Mysql面试题总结
数据库三大范式是什么 第一范式:每个列都不可以再拆分。 第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。 第三范式:在第二范式的基础上,非主键列只依赖于主键&#…...
学习知识随笔(Django)
文章目录 MVC与MTV模型MVCMTV Django目录结构Django请求生命周期流程图路由控制路由是什么路由匹配反向解析路由分发 视图层视图函数语法reqeust对象属性reqeust对象方法 MVC与MTV模型 MVC Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M&#…...
基于element自动表格
需求是根据JSON文件生成表格,包含配置和自动props属性以及过滤器; 数据示例: 表格设置: /*** 表格表头信息* chineseToPinYin: 这是封装的根据中文汉字转换为拼音的方法* prop: 表头字段名* filter: 数据过滤器* label: 表头显示…...
Python基础语法之学习数据转换
Python基础语法之学习数据转换 一、代码二、效果 一、代码 #数字转换成字符串 num_str str(11) print(type(num_str))#字符串转整数 numint("11") print(type(num),num)#浮点数转整数 float_num int(11.1) print(type(float_num),float_num)#整数转浮点数 num_flo…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
