五 Selenium4+Python3系列 - 多窗口處理之句柄切換

寫在前面感覺到很慚愧呀,因為居然在Selenium+Java系列中沒有寫過多窗口處理及句柄切換的文章 , 不過也無妨,不管什么語言,其思路是一樣的,下面我們來演示,使用python語言來實現窗口句柄的切換 。
什么是窗口句柄可能有的同學會問了,到底啥是窗口 , 什么又是多窗口 , 句柄到底是啥玩楞?
那么,他到底長啥樣?如下圖所示:

五 Selenium4+Python3系列 - 多窗口處理之句柄切換

文章插圖
怎么處理多窗口句柄如何獲取窗口句柄
語法:
driver.current_window_handle
1、模擬場景打開搜狗首頁,輸入淘寶進入久曲健 博客園,并輸出頁面標題
2、使用具柄判斷切換就是通過窗口句柄判斷切換,示例代碼入下:
【五 Selenium4+Python3系列 - 多窗口處理之句柄切換】for window_handle in window_handles:if window_handle != old_Window:driver.switch_to.window(window_handle)print(driver.title)else:driver.close()3、使用URL判斷切換就是根據跳轉的當前URL切換,示例代碼如下:
for window_handle in window_handles:driver.switch_to.window(window_handle)newUrl = driver.current_urlif 'cnblogs' in newUrl:print(driver.title)else:driver.close()4、通過下標切換window_handles = driver.window_handles返回的是一個集合,所以自然用下標去切換,簡單點說就是 , 只要找到想要切換的窗口下標即可實現切換,多個窗口不建議使用此方法 。
示例代碼如下:
driver.close()driver.switch_to.window(window_handles[1])print(driver.title)5、關閉新窗口句柄,切回原來主頁筆者反復試驗發現,用句柄刪除不好用,還是這個url靠譜,示例代碼如下:
for window_handle in window_handles:driver.switch_to.window(window_handle)newUrl = driver.current_urlif 'cnblogs' in newUrl:driver.close()else:print(driver.title)所有匯總代碼如下:
# -*- coding: utf-8 -*-"""@Time : 2022/10/26 14:12@Auth : 軟件測試君@File :switch_window.py@IDE :PyCharm@Motto:ABC(Always Be Coding)多窗口處理之句柄切換"""import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Byfrom webdriver_manager.chrome import ChromeDriverManagerfrom selenium.webdriver.chrome.service import Service'''初始化操作'''driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))def init():# 最大化操作driver.maximize_window()driver.set_script_timeout(60)# 智能等待找到元素后立即繼續執行 , 全局生效driver.implicitly_wait(60)driver.set_page_load_timeout(60)init()driver.get("https://www.sogou.com/")driver.find_element(By.ID, "query").clear()driver.find_element(By.ID, "query").send_keys("久曲健 博客園")driver.find_element(By.ID, "stb").click()time.sleep(2)# 獲取當前頁面窗口句柄(每個句柄的表示都是唯一的)old_Window = driver.current_window_handleprint('當前窗口句柄為:{0}'.format(old_Window))driver.find_element(By.LINK_TEXT, "久曲健 - 博客園").click()time.sleep(2)window_handles = driver.window_handlesprint(window_handles)'''### 方法一:for window_handle in window_handles:if window_handle != old_Window:driver.switch_to.window(window_handle)print(driver.title)else:driver.close()''''''### 方法二:driver.close()driver.switch_to.window(window_handles[1])print(driver.title)''''''### 方法三:for window_handle in window_handles:driver.switch_to.window(window_handle)newUrl = driver.current_urlif 'cnblogs' in newUrl:print(driver.title)else:driver.close()'''# 關閉新窗口句柄 , 切回原來主頁for window_handle in window_handles:driver.switch_to.window(window_handle)newUrl = driver.current_urlif 'cnblogs' in newUrl:driver.close()else:print(driver.title)driver.quit()寫在最后最近心情還是很不好 , 恐慌的不是單身可怕,而是年紀越來越大,也不知道現在的女孩都在想什么,好想結婚呀!
感興趣的同學,請自己去嘗試,關于Selenium4.0+Python3系列教程 , 未完待續····

    推薦閱讀