selenium之窗口切换

news/2024/10/4 13:11:19/

1、弹窗

1.1 Alerts警告框

driver.find_element(By.ID, "alert").click()#窗口切换并获取text
print(driver.switch_to.alert.text)#窗口切换并点击 确定
driver.switch_to.alert.accept()driver.find_element(By.ID, "alert").click()#窗口切换并点击 取消
driver.switch_to.alert.dismiss()

1.2 Confirm确认框

driver.find_element(By.ID, "confirm").click()#窗口切换并获取text
print(driver.switch_to.alert.text)#窗口切换并点击 确定
driver.switch_to.alert.accept()
driver.find_element(By.ID, "confirm").click()#窗口切换并点击 取消
driver.switch_to.alert.dismiss()

1.3 Prompt提示框

driver.find_element(By.ID, "prompt").click()
#窗口切换并获取text
print(driver.switch_to.alert.text)#窗口切换并点击 确定
driver.switch_to.alert.accept()#页面刷新
driver.refresh()driver.find_element(By.ID, "prompt").click()#窗口切换并点击 取消
driver.switch_to.alert.dismiss()driver.refresh()
driver.find_element(By.ID, "prompt").click()#窗口切换并输入
driver.switch_to.alert.send_keys("你大爷")#窗口切换并点击 确定
driver.switch_to.alert.accept()

2、标签页

#获取所有句柄
handles = driver.window_handles# 同句柄的list对象切换
driver.switch_to.window(handles[index])# 获取当前标签页的句柄
handle = driver.current_window_handle# 切换至最新打开的标签页
def switch_to_current(self):handles = self.driver.window_handlesprint(handles)current_window = self.driver.current_window_handleprint(current_window)for window in handles:if handles.index(window) == len(handles)-1:self.driver.switch_to.window(window)break# 打开新标签页并切换到新标签页
driver.switch_to.new_window('tab')# 打开一个新窗口并切换到新窗口
driver.switch_to.new_window('window')

3、frame

页面(html)内嵌套一个页面(html);一个完整的页面即是一个document,所以也是一个嵌套的document;要操作嵌套的html/document需要切换到里面去;常见的frame表现形式有:frame标签/iframe标签;

# 定位生日元素
driver.find_element(By.NAME, "birthday").click()
time.sleep(3)
frame_ele = driver.find_element(By.XPATH, "/html/body/div[7]/iframe")# 进入了frame
driver.switch_to.frame(frame_ele)  
driver.find_element(By.ID, "dpTodayInput").click()# 在frame里面操作完之后;一定要出来这个frame
driver.switch_to.parent_frame()

http://www.ppmy.cn/news/1534425.html

相关文章

记录一次gRpc流式操作

使用背景: 从redis队列中发送和消费消息.(使用gRpc的流式实现的消费消息) gRpc协议类定义 message AdMsgProto{ optional string msg1; optional string tag2; optional string topic3; } 2. service方法定义 service MQDataService{ rpc sendRedissonMsg(AdMsgProto)returns…

【AI知识点】词频-逆文档频率(TF-IDF)

词频-逆文档频率(TF-IDF,Term Frequency-Inverse Document Frequency)是一种用来衡量一个词在某个文档中的重要性,同时结合该词在整个文档集中的出现频率。它的核心思想是:在特定文档中出现频率高且在其他文档中较少出…

深入探讨分布式数据库:技术架构、应用案例与性能优化

1. 引言 在大数据时代,数据量呈指数级增长,传统的单机数据库面临诸多挑战,如性能瓶颈、可扩展性不足和单点故障等问题。分布式数据库应运而生,通过将数据分散存储在多个节点上,提供高可用性和可扩展性,成为…

电商技术选型:Spring Boot在线商城系统

4 系统设计 ONLY在线商城系统的设计方案比如功能框架的设计,比如数据库的设计的好坏也就决定了该系统在开发层面是否高效,以及在系统维护层面是否容易维护和升级,因为在系统实现阶段是需要考虑用户的所有需求,要是在设计阶段没有经…

论文推荐 |【Agent】自动化Agent设计系统

论文标题: Automated Design of Agentic Systems 论文地址: https://arxiv.org/abs/2408.08435 GitHub地址: https://github.com/ShengranHu/ADAS 自动化代理设计在性能和通用性方面显著超越了手动方法。 • 引入了自动化代理系统设计&am…

Redis: Sorted Set 底层算法的简单分析

概述 我们先看下 Shorted Set 有序集合的内部数据结构所谓有序集合,比如有个容器,容器里边都已经排好序了,那无非就是快速的查找和插入不管你是查找还是插入,肯定要确定那个位置最简单的办法就是从最开头开始,挨个比较…

QCamera6.7笔记

1.QCamera​ .h文件 #include <QtWidgets/QMainWindow> #include "ui_QCamera_test1.h" #include <QCamera> #include <QtMultimedia> #include <QtMultimediaWidgets> #include<QMediaCaptureSession> #include <QMediaDevices&…

Linux下驱动开发实例

驱动开发 驱动与硬件的分离 在传统的嵌入式系统开发中&#xff0c;硬件信息往往是直接硬编码在驱动代码中的。这样做的问题是&#xff0c;当硬件发生变化时&#xff0c;比如增加或更换设备&#xff0c;就需要修改驱动程序的代码&#xff0c;这会导致维护成本非常高。因此&…