Selenium:多視窗切換(獲取視窗控制代碼handle)
阿新 • • 發佈:2019-01-02
我們在操作網頁的時候,點選有些頁面的連結,會重新開啟一個視窗,我們要在新頁面上操作,就得切換視窗
比如在百度首頁的登入框點選註冊,會重新開啟一個註冊的新頁面,要在新頁面註冊,就得先切進新頁面
那我們怎麼在這兩個視窗之間進行切換呢?每個瀏覽器視窗都有一個唯一的屬性控制代碼(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 importWebDriverWait 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_handleprint(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()