获取窗口句柄(以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)
切换窗口(以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])
切换到新窗口。
切换回原始窗口(以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)
切换回原始窗口。
等待新窗口打开(结合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
方法返回新窗口的句柄,然后就可以切换到新窗口进行操作。