『心善淵』Selenium3.0基礎 — 15、Selenium對多窗口的操作
- 2021 年 7 月 4 日
- 筆記
- 測試基礎必會技能 - Selenium測試框架
1、多標籤/多窗口之間的切換
(1)多標籤/多窗口場景:
在頁面操作過程中有時候點擊某個鏈接會彈出新的窗口,這時就需要切換到新打開的窗口上進行操作,如果繼續操作原來的頁面會報錯的。這時候就就時多標籤或窗口的情況,即識別切換句柄。
(2)操作方法:
switch_to.window()
方法:切換窗口。可以實現在不同的窗口之間切換。current_window_handle
: 獲得當前窗口句柄。window_handles
: 獲取所有窗口句柄。
提示:句柄就可以理解成瀏覽器窗口的
id
值。
(3)操作說明:
- 獲取所有窗口的句柄
handles = driver.window_handlers
調用該方法會得到一個列表,在Selenium運行過程中的每一個窗口,都有一個對應的值存放在裡面。
(換句話說,有多少個窗口,就有多少個句柄) - 通過窗口的句柄進入的窗口
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
"""