网上有很多是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() #退出浏览器

截图如下:

selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口)的更多相关文章

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

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

  2. Selenium获取当前窗口句柄与切换回原窗口句柄

    Selenium通过window_handles获取当前窗口句柄,进行页面元素操作 切换回原窗口句柄,进行元素操作 代码如下:(python版) __author__ = 'liuke' import ...

  3. selenium获取新页面标签页(只弹出一个新页面的切换)

    selenium获取新页面标签页(只弹出一个新页面的切换) windows = driver.current_window_handle #定位当前页面句柄 all_handles = driver. ...

  4. selenium多个标签页的切换(弹出新页面的切换)

    1_windows = driver.current_window_handle #定位当前页面句柄 all_handles = driver.window_handles #获取全部页面句柄 for ...

  5. Python3.x:selenium获取iframe内嵌页面的源码

    Python3.x:selenium获取iframe内嵌页面的源码 前言 在一些网页中经常会看到ifrmae/frame标签,iframe是嵌入式框架一般用来在已有的页面中嵌入另一个页面,当一个元素在 ...

  6. selenium获取元素后用click()点击没有作用,用Keys.ENTER就可以成功

    selenium获取元素后用click()点击没有作用,用键盘输入enter(Keys.ENTER)就可以成功 #coding = utf-8 from selenium import webdriv ...

  7. Python网络爬虫笔记(四):使用selenium获取动态加载的内容

    (一)  说明 上一篇只能下载一页的数据,第2.3.4....100页的数据没法获取,在上一篇的基础上修改了下,使用selenium去获取所有页的href属性值. 使用selenium去模拟浏览器有点 ...

  8. selenium 获取某元素的 某属性 的值

    selenium  获取某元素的 某属性的值 1 先通过元素定位,获得此元素的 WebElement; WebElement   yuansu = driver.findElement(By.clas ...

  9. python3+selenium获取列表某一列的值

    python3+selenium获取列表某一列的值 我们在坐自动化测试时,我们可能不想单纯的想验证一个选项卡,我们让脚本随机选择一个选项进行接下来的操作.例如我们想获取列表某一列的某一个数据(随机的) ...

随机推荐

  1. 编译MVC解决方案老出现这个问题的原因

    Server Error in '/' Application. The view at '~/Views/Home/Index.cshtml' must derive from WebViewPag ...

  2. (转)Tomcat数据源连接池加密

    文章来源 :http://my.oschina.net/cimu/blog/164757 我们在使用Tomcat数据库连接池的时候都是明文存储数据库用户名和密码的,例如: <Resource n ...

  3. 项目导入myeclipse10后jsp报错问题

    电脑重装系统装了个myeclipse10,当项目导入时发现jsp报错,原本以为是jdk版本问题,在网上找了资料才知道原来是myeclipse10相对之前版本对js的检查更加严格了.可以用以下方法解决: ...

  4. Visual Studio 2015 新建MVC项目 Package Manager Console不能使用 (HRESULT: 0x80131500)

    Visual studio 2015 突然新建不了MVC项目,报出错误: HRESULT: 0x80131500 在折腾了很长时间,最后在Github上看到这样一个贴 地址:https://githu ...

  5. 华为c8812刷机/rom之后,本地音乐无法设置为铃声解决方法【亲测】

    手机刷机后,来电铃声和通知铃声可以总能找到办法设置,但闹钟铃声想设置本地音乐,总是没反应,抓狂!!! 后来终于找到了解决办法,很简单:装一个软件——华为音乐,就可以设置了! 吐槽一下,这个手机买电信送 ...

  6. 练习sql语句的好去处——http://www.sqlzoo.cn/

    sql语句的编写需要按照实际的例子来练习. 如果自己来做准备,需要你自己搭好数据库,建好库和表,还要填入数据,最后自己想出题目和正确答案. 不过,现在我发现了一个好去处,http://www.sqlz ...

  7. POJ 1061

    题意: 两只青蛙在同一条纬度上,它们各自朝西跳,问它们要跳多少步才能碰面(必须同时到达同一点). 分析: 假设它们跳了t步才相遇,青蛙a初始坐标为x,青蛙b初始坐标为y,则跳了t步相遇后a的坐标为 x ...

  8. 使用GridVIew显示Gantt(甘特图),动态增减列

    说明:本例是做了工厂的排机报表 一.根据查询日期初始化GridView列 private void IniGridView(DateTime p_DateS,DateTime p_DateE) { / ...

  9. z-index 可以使用负值,CSS相对定位、绝对定位利器

    很多技巧都是在工作中测试出来的,我搞DIV+CSS前端开发,现在是安卓收藏家,日常也有很多技巧,刚刚突然发现的这个技巧,真的很实用:Z-index值可以使用负值. z-index是个很强大的属性,是个 ...

  10. adb shell

    1.获取进程ID adb shell ps |findstr packagename 2.获取cpu的值 adb shell dumpsys cpuinfo |findstr packagename ...