『心善淵』Selenium3.0基礎 — 15、Selenium對多窗口的操作

1、多標籤/多窗口之間的切換

(1)多標籤/多窗口場景

在頁面操作過程中有時候點擊某個鏈接會彈出新的窗口,這時就需要切換到新打開的窗口上進行操作,如果繼續操作原來的頁面會報錯的。這時候就就時多標籤或窗口的情況,即識別切換句柄。

(2)操作方法:

  • switch_to.window()方法:切換窗口。可以實現在不同的窗口之間切換。
  • current_window_handle: 獲得當前窗口句柄。
  • window_handles: 獲取所有窗口句柄。

提示:句柄就可以理解成瀏覽器窗口的id值。

(3)操作說明

  1. 獲取所有窗口的句柄
    handles = driver.window_handlers
    調用該方法會得到一個列表,在Selenium運行過程中的每一個窗口,都有一個對應的值存放在裡面。
    (換句話說,有多少個窗口,就有多少個句柄)
  2. 通過窗口的句柄進入的窗口
    driver.switch_to_window(handles[n])

2、句柄練習

"""
1.學習目標:
    必須掌握web中多窗口切換方法
2.語法(操作步驟)
    2.1 獲取當前窗口句柄
        driver.current_window_handle
    2.2 點擊頁面中的超鏈接觸發多窗口
    2.3 獲取所有窗口句柄
        driver.window_handles
    2.4 進入新窗口
        switch_to.window(handles[1])
    2.5 操作新窗口中的元素
        按實際工作需求編寫
    2.6 退出新窗口
        switch_to.window(handles[0])

3.需求
    在頁面中,實現多窗口切換。
"""
# 1.導入selenium
from selenium import webdriver
from time import sleep

# 2.打開瀏覽器
driver = webdriver.Chrome()

# 3.打開我的Python文檔頁面
url = "//blog.csdn.net/Liuyuelinjiayou/article/details/105789238"
driver.get(url)
sleep(2)

# 4. 多窗口切換操作
# 4.1 獲取當前窗口句柄
handle = driver.current_window_handle
print('點擊之前的窗口句柄是:', handle)
print('點擊前的url:', driver.current_url)

# 4.2 點擊頁面中的超鏈接觸發多窗口
driver.find_element_by_link_text("PyCharm下載與安裝").click()
sleep(2)

# 4.2 獲取所有窗口句柄
handles = driver.window_handles

# 4.3 進入新窗口
driver.switch_to.window(handles[1])
print('點擊之後瀏覽器所有的窗口句柄是:', handles)
print('點擊後的url:', driver.current_url)

# 4.5 退出新窗口
# 你需要退到哪個窗口就寫哪個窗口的handle索引
# 因為handle在上邊賦值等於第一個窗口了,這裡就可以寫handle
# 也可以寫handles[0]
driver.switch_to.window(handle)
sleep(10)

# 5.關閉瀏覽器
driver.quit()

"""
輸出結果:
點擊之前的窗口句柄是: CDwindow-6F1E6437F354913663E6A7E5A1486784
點擊前的url: //blog.csdn.net/Liuyuelinjiayou/article/details/105789238

點擊之後瀏覽器所有的窗口句柄是: ['CDwindow-6F1E6437F354913663E6A7E5A1486784', 'CDwindow-48640D53F053821ED38D21B87E549A73']
點擊後的url: //blog.csdn.net/Liuyuelinjiayou/article/details/105729957
"""