多窗口切换——selenium

  1. 获取窗口句柄(以Python + Selenium为例)
    • current_window_handle方法
      • 用于获取当前窗口的句柄。句柄是一个标识符,用于唯一标识一个窗口。
      • 示例代码
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方法
    • 用于获取所有打开窗口的句柄,返回一个句柄列表。这个列表在需要切换窗口时非常有用。
    • 示例代码
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为例)
    • 通过句柄切换窗口
      • 当有多个窗口句柄时,可以通过指定句柄来切换窗口。
      • 示例代码
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为例)
    • 示例代码
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等待新窗口打开并切换)
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方法返回新窗口的句柄,然后就可以切换到新窗口进行操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值