千家信息网

selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口)

发表于:2024-10-25 作者:千家信息网编辑
千家信息网最后更新 2024年10月25日,网上有很多是selenium基于python来获取两个窗口句柄与切换,本文实现用python+selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口),且在每个窗口下进行一个搜索或翻译,然后截
千家信息网最后更新 2024年10月25日selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口)

网上有很多是selenium基于python来获取两个窗口句柄与切换,本文实现用python+selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口),且在每个窗口下进行一个搜索或翻译,然后截图。

代码如下:

# coding=utf-8from selenium import webdriverimport timedriver = webdriver.Chrome()driver.maximize_window() # 窗口最大化driver.get('https://www.baidu.com') # 在当前浏览器中访问百度time.sleep(2)#print(driver.current_window_handle)# 输出当前窗口句柄(百度)frist_handle = driver.current_window_handle# 新开一个窗口,通过执行js来新开一个窗口,访问搜狗js='window.open("https://www.sogou.com");'driver.execute_script(js)# 再新开一个窗口,通过执行js来新开一个窗口,访问有道js='window.open("http://www.youdao.com/");'driver.execute_script(js)handles = driver.window_handles # 获取当前窗口句柄集合(列表类型)print(handles) # 输出句柄集合for handle in handles:# 切换窗口(切换到有道)    if handle != frist_handle:        driver.switch_to_window(handle)        #print(driver.current_window_handle)  # 输出当前窗口句柄(有道)        driver.find_element_by_id("translateContent").send_keys("selenium")  #有道翻译selenium        driver.find_element_by_css_selector("button").click()        #driver.find_element_by_css_selector("[data-rlog='search-popup-close-win']").click()        driver.find_element_by_css_selector("[class='close js_close']").click()  #关闭弹窗        driver.get_screenshot_as_file("D:\windows\\youdao.jpg")  # 截图  可自定义截图后的保存位置(D:\windows)和图片命名(youdao.jpg)        time.sleep(5)        breakdriver.close() #关闭当前窗口(有道)for handle in handles:# 切换窗口(切换到搜狗)    if handle != frist_handle:        driver.switch_to_window(handles[-1]) #此时只剩两个句柄,取最后一个        #print(driver.current_window_handle)  # 输出当前窗口句柄(搜狗)        driver.find_element_by_id("query").send_keys("selenium")  #搜狗搜索selenium        driver.find_element_by_id("stb").click()        time.sleep(2)  #等待2s为了截完整搜索结果图        driver.get_screenshot_as_file("D:\windows\\sougou.jpg")  # 截图  可自定义截图后的保存位置和图片命名        time.sleep(5)        breakdriver.close() #关闭当前窗口(搜狗)#driver.switch_to_window(frist_handle) #切换回百度窗口driver.switch_to_window(handles[0]) #切换回百度窗口driver.find_element_by_id("kw").send_keys("selenium")  #百度搜索seleniumdriver.find_element_by_id("su").click()time.sleep(2) #等待2s为了截完整搜索结果图driver.get_screenshot_as_file("D:\windows\\baidu.jpg")  #截图  可自定义截图后的保存位置和图片命名time.sleep(5)driver.quit() #退出浏览器

截图如下:

0