1. 程式人生 > >Selenium:多視窗切換(獲取視窗控制代碼handle)

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()