Selenium:多窗口切換(獲取窗口句柄handle)


我們在操作網頁的時候,點擊有些頁面的鏈接,會重新打開一個窗口,我們要在新頁面上操作,就得切換窗口

比如在百度首頁的登錄框點擊注冊,會重新打開一個注冊的新頁面,要在新頁面注冊,就得先切進新頁面

那我們怎么在這兩個窗口之間進行切換呢?每個瀏覽器窗口都有一個唯一的屬性句柄(handle)來表示,我們就可以通過句柄來切換

獲取當前窗口句柄:

# coding = utf-8
from selenium import webdriver
# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啟動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.get(r'https://www.baidu.com/')
# 獲取當前窗口句柄
main_windows = driver.current_window_handle
print(main_windows)
# 退出
driver.quit()

獲取所有窗口句柄:

# coding = utf-8
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from time import sleep
# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啟動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.implicitly_wait(10)
driver.get(r'https://www.baidu.com/')
# 獲取當前窗口句柄
main_windows = driver.current_window_handle
print(main_windows)
# 進入注冊
driver.find_element_by_link_text("登錄").click()
# 這里加一個顯示等待,不然有時會報找不到“立即注冊這個元素”
WebDriverWait(driver,20).until(lambda x:x.find_element_by_link_text("立即注冊")).click()
# 獲取當前所有打開的窗口句柄
all_windows = driver.window_handles
print(all_windows)
# 退出
sleep(5)
driver.quit()

窗口切換

# coding = utf-8
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from time import sleep
# 驅動文件路徑
driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'
# 啟動瀏覽器
driver = webdriver.Chrome(executable_path=driverfile_path)
# 打開百度首頁
driver.implicitly_wait(10)
driver.get(r'https://www.baidu.com/')
# 獲取當前窗口句柄
main_windows = driver.current_window_handle
print(main_windows)
# 進入注冊
driver.find_element_by_link_text("登錄").click()
# 這里加一個顯示等待,不然有時會報找不到“立即注冊這個元素”
WebDriverWait(driver,20).until(lambda x:x.find_element_by_link_text("立即注冊")).click()
# 獲取當前所有打開的窗口句柄
all_windows = driver.window_handles
print(all_windows)
# 切換進注冊頁面
for handle in all_windows:
    if handle != main_windows:
        driver.switch_to.window(handle)
# 獲取注冊頁面窗口句柄
register_windows = driver.current_window_handle
print(register_windows)
# 切換回百度首頁
driver.switch_to.window(main_windows)
print(driver.title)
# 退出
sleep(5)
driver.quit()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM