網上有不少是selenium基於python來獲取兩個窗口句柄與切換,本文實現用python+selenium獲取多窗口句柄並一一切換至原窗口句柄(三個窗口),且在每一個窗口下進行一個搜索或翻譯,而後截圖。css
代碼以下:python
1 # coding=utf-8 2 from selenium import webdriver 3 import time 4 5 driver = webdriver.Chrome() 6 driver.maximize_window() # 窗口最大化 7 8 driver.get('https://www.baidu.com') # 在當前瀏覽器中訪問百度 9 time.sleep(2) 10 #print(driver.current_window_handle)# 輸出當前窗口句柄(百度) 11 frist_handle = driver.current_window_handle 12 13 # 新開一個窗口,經過執行js來新開一個窗口,訪問搜狗 14 js='window.open("https://www.sogou.com");' 15 driver.execute_script(js) 16 17 # 再新開一個窗口,經過執行js來新開一個窗口,訪問有道 18 js='window.open("http://www.youdao.com/");' 19 driver.execute_script(js) 20 21 handles = driver.window_handles # 獲取當前窗口句柄集合(列表類型) 22 print(handles) # 輸出句柄集合 23 24 for handle in handles:# 切換窗口(切換到有道) 25 if handle != frist_handle: 26 driver.switch_to_window(handle) 27 #print(driver.current_window_handle) # 輸出當前窗口句柄(有道) 28 driver.find_element_by_id("translateContent").send_keys("selenium") #有道翻譯selenium 29 driver.find_element_by_css_selector("button").click() 30 #driver.find_element_by_css_selector("[data-rlog='search-popup-close-win']").click() 31 driver.find_element_by_css_selector("[class='close js_close']").click() #關閉彈窗 32 driver.get_screenshot_as_file("D:\windows\\youdao.jpg") # 截圖 可自定義截圖後的保存位置(D:\windows)和圖片命名(youdao.jpg) 33 time.sleep(5) 34 break 35 driver.close() #關閉當前窗口(有道) 36 37 for handle in handles:# 切換窗口(切換到搜狗) 38 if handle != frist_handle: 39 driver.switch_to_window(handles[-1]) #此時只剩兩個句柄,取最後一個 40 #print(driver.current_window_handle) # 輸出當前窗口句柄(搜狗) 41 driver.find_element_by_id("query").send_keys("selenium") #搜狗搜索selenium 42 driver.find_element_by_id("stb").click() 43 time.sleep(2) #等待2s爲了截完整搜索結果圖 44 driver.get_screenshot_as_file("D:\windows\\sougou.jpg") # 截圖 可自定義截圖後的保存位置和圖片命名 45 time.sleep(5) 46 break 47 driver.close() #關閉當前窗口(搜狗) 48 49 #driver.switch_to_window(frist_handle) #切換回百度窗口 50 driver.switch_to_window(handles[0]) #切換回百度窗口 51 driver.find_element_by_id("kw").send_keys("selenium") #百度搜索selenium 52 driver.find_element_by_id("su").click() 53 time.sleep(2) #等待2s爲了截完整搜索結果圖 54 driver.get_screenshot_as_file("D:\windows\\baidu.jpg") #截圖 可自定義截圖後的保存位置和圖片命名 55 time.sleep(5) 56 driver.quit() #退出瀏覽器
截圖以下:web
----------------------------------------------------------------------------------------windows
talk is cheap , show me the code.瀏覽器