selenium獲取多窗口句柄並一切換至原窗口句柄(三個窗口)


網上有很多是selenium基於python來獲取兩個窗口句柄與切換,本文實現用python+selenium獲取多窗口句柄並一一切換至原窗口句柄(三個窗口),且在每個窗口下進行一個搜索或翻譯,然后截圖。

代碼如下:

 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() #退出瀏覽器

截圖如下:

 

----------------------------------------------------------------------------------------

talk is cheap , show me the code.

 


免責聲明!

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



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