多窗口切换——selenium

  1. 获取窗口句柄(以Python + Selenium为例)
    • current_window_handle方法
      • 用于获取当前窗口的句柄。句柄是一个标识符,用于唯一标识一个窗口。
      • 示例代码:
python 复制代码
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.example.com")
current_window_handle = driver.current_window_handle
print("当前窗口句柄:", current_window_handle)
  • window_handles方法
    • 用于获取所有打开窗口的句柄,返回一个句柄列表。这个列表在需要切换窗口时非常有用。
    • 示例代码:
python 复制代码
from selenium import webdriver

driver = 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为例)
    • 通过句柄切换窗口
      • 当有多个窗口句柄时,可以通过指定句柄来切换窗口。
      • 示例代码:
python 复制代码
from selenium import webdriver

driver = 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为例)
    • 示例代码:
python 复制代码
from selenium import webdriver

driver = 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等待新窗口打开并切换):
python 复制代码
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 By

driver = 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方法返回新窗口的句柄,然后就可以切换到新窗口进行操作。
相关推荐
木卫二号Coding13 小时前
推荐Linux统计文件大小并操作删除工具-ncdu
linux·运维·服务器
gb421528713 小时前
向量数据库多模态特性
数据库
泡海椒13 小时前
数据占比展示:jquick-pdf饼图动态数据渲染PDF教程
数据库·oracle·pdf
大连好光景14 小时前
向量数据库的工作流程详解
数据库·milvus
catchadmin14 小时前
用 Jev 与 Laravel AI SDK 检测垃圾邮件和自动回复
数据库·人工智能·laravel
吠品15 小时前
CSS图片模糊过渡:一个transition加filter就够
java·数据库·notepad++
梦想不只是梦与想16 小时前
对象存储服务器vs数据库
数据库·对象存储·图片存储
2601_9672875716 小时前
轮胎侧壁上的 91V 是什么意思,负荷指数与速度级别怎么看
运维·服务器·汽车
Ivanqhz16 小时前
正余弦位置编码(Sinusoidal Positional Encoding)
java·linux·数据库
Ivanqhz17 小时前
层归一化、残差、前馈网络与激活函数简述
服务器·数据库·人工智能·深度学习·算法