当前位置: 首页 > news >正文

多窗口切换——selenium

  1. 获取窗口句柄(以Python + Selenium为例)
    • current_window_handle方法
      • 用于获取当前窗口的句柄。句柄是一个标识符,用于唯一标识一个窗口。
      • 示例代码
from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://www.example.com")
current_window_handle = driver.current_window_handle
print("当前窗口句柄:", current_window_handle)
  • window_handles方法
    • 用于获取所有打开窗口的句柄,返回一个句柄列表。这个列表在需要切换窗口时非常有用。
    • 示例代码
from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://www.example.com")
# 打开一个新窗口(假设通过点击某个链接打开新窗口)
driver.find_element_by_link_text("打开新窗口链接").click()
window_handles = driver.window_handles
print("所有窗口句柄:", window_handles)
  1. 切换窗口(以Python + Selenium为例)
    • 通过句柄切换窗口
      • 当有多个窗口句柄时,可以通过指定句柄来切换窗口。
      • 示例代码
from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://www.example.com")
# 打开一个新窗口(假设通过点击某个链接打开新窗口)
driver.find_element_by_link_text("打开新窗口链接").click()
window_handles = driver.window_handles
# 切换到新打开的窗口
driver.switch_to.window(window_handles[1])
  • 在上述代码中,window_handles方法获取了所有窗口的句柄,由于新打开的窗口句柄在列表中的第二个位置(索引为1,第一个是原始窗口),所以通过driver.switch_to.window(window_handles[1])切换到新窗口。
  1. 切换回原始窗口(以Python + Selenium为例)
    • 示例代码
from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://www.example.com")
original_window_handle = driver.current_window_handle
# 打开一个新窗口(假设通过点击某个链接打开新窗口)
driver.find_element_by_link_text("打开新窗口链接").click()
window_handles = driver.window_handles
# 切换到新打开的窗口
driver.switch_to.window(window_handles[1])
# 切换回原始窗口
driver.switch_to.window(original_window_handle)
  • 这里首先保存了原始窗口的句柄,在切换到新窗口并进行相关操作后,通过driver.switch_to.window(original_window_handle)切换回原始窗口。
  1. 等待新窗口打开(结合WebDriverWait
    • 在实际操作中,新窗口的打开可能需要一些时间。可以使用WebDriverWait来等待新窗口打开,确保在切换窗口之前窗口已经成功打开。
    • 示例代码(使用WebDriverWait等待新窗口打开并切换)
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
driver.get("https://www.example.com")
# 记录原始窗口句柄
original_window_handle = driver.current_window_handle
# 点击打开新窗口的链接
driver.find_element_by_link_text("打开新窗口链接").click()
# 等待新窗口打开
new_window_handle = WebDriverWait(driver, 10).until(EC.window_opens(lambda: len(driver.window_handles) > 1)
)
# 切换到新窗口
driver.switch_to.window(new_window_handle)
  • 在这个示例中,WebDriverWait等待条件是新窗口打开,即window_opens条件,通过一个匿名函数lambda: len(driver.window_handles) > 1来判断窗口数量是否大于1。当条件满足时,until方法返回新窗口的句柄,然后就可以切换到新窗口进行操作。
http://www.lryc.cn/news/484855.html

相关文章:

  • LFD STM32编程规范20241111
  • Python学习------第八天
  • 【扩散——BFS】
  • C++ 编程基础(5)类与对象 | 5.5、多态
  • 客户端发送http请求进行流量控制
  • STM32 低功耗模式详解
  • 我的第一个PyQt5程序
  • Unity调用Python
  • 前端,location.reload刷新页面
  • 5G的发展演进
  • 数据库参数备份
  • PG数据库 数据库时间字段 开始时间和结束时间,判断和查询条件的开始和截止时间存在交集,SQL如何编写
  • k8s服务内容滚动升级以及常用命令介绍
  • 机器学习: LightGBM模型(优化版)——高效且强大的树形模型
  • Wordpress常用配置,包括看板娘跨域等
  • Python学习从0到1 day27 Python 高阶技巧 ③ 设计模式 — 单例模式
  • Unity 网格模型及优化
  • 离线 快速搭建 docker docker-compose k8s 环境
  • Excel根据条件动态索引单元格范围
  • 【计算机网络五】HTTP协议!网站运行的奥秘!
  • 开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-Qwen-Agent深入学习(四)
  • stream学习
  • 【数据结构】实验二 单链表的基本操作
  • SQL 分组查询中的非聚合列要求及实例解析
  • Unity中实现战斗帧同步的高级技术
  • Qt 正则表达式提取文件中的 USB 设备 ID
  • 使用 Python 和 OpenCV 实现摄像头人脸检测并截图
  • 【二叉搜素树】——LeetCode二叉树问题集锦:6个实用题目和解题思路
  • 【计算机视觉】FusionGAN
  • 问:SQL优化,七条实践总结?