我們在操作網頁的時候,點擊有些頁面的鏈接,會重新打開一個窗口,我們要在新頁面上操作,就得切換窗口
比如在百度首頁的登錄框點擊注冊,會重新打開一個注冊的新頁面,要在新頁面注冊,就得先切進新頁面
那我們怎么在這兩個窗口之間進行切換呢?每個瀏覽器窗口都有一個唯一的屬性句柄(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()