selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口)
网上有很多是selenium基于python来获取两个窗口句柄与切换,本文实现用python+selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口),且在每个窗口下进行一个搜索或翻译,然后截图。
代码如下:
# coding=utf-8
from selenium import webdriver
import time driver = 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)
break
driver.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)
break
driver.close() #关闭当前窗口(搜狗) #driver.switch_to_window(frist_handle) #切换回百度窗口
driver.switch_to_window(handles[0]) #切换回百度窗口
driver.find_element_by_id("kw").send_keys("selenium") #百度搜索selenium
driver.find_element_by_id("su").click()
time.sleep(2) #等待2s为了截完整搜索结果图
driver.get_screenshot_as_file("D:\windows\\baidu.jpg") #截图 可自定义截图后的保存位置和图片命名
time.sleep(5)
driver.quit() #退出浏览器
截图如下:

selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口)的更多相关文章
- selenium获取多窗口句柄并一切换至原窗口句柄(三个窗口)
网上有很多是selenium基于python来获取两个窗口句柄与切换,本文实现用python+selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口),且在每个窗口下进行一个搜索或翻译,然后截 ...
- Selenium获取当前窗口句柄与切换回原窗口句柄
Selenium通过window_handles获取当前窗口句柄,进行页面元素操作 切换回原窗口句柄,进行元素操作 代码如下:(python版) __author__ = 'liuke' import ...
- selenium获取新页面标签页(只弹出一个新页面的切换)
selenium获取新页面标签页(只弹出一个新页面的切换) windows = driver.current_window_handle #定位当前页面句柄 all_handles = driver. ...
- selenium多个标签页的切换(弹出新页面的切换)
1_windows = driver.current_window_handle #定位当前页面句柄 all_handles = driver.window_handles #获取全部页面句柄 for ...
- Python3.x:selenium获取iframe内嵌页面的源码
Python3.x:selenium获取iframe内嵌页面的源码 前言 在一些网页中经常会看到ifrmae/frame标签,iframe是嵌入式框架一般用来在已有的页面中嵌入另一个页面,当一个元素在 ...
- selenium获取元素后用click()点击没有作用,用Keys.ENTER就可以成功
selenium获取元素后用click()点击没有作用,用键盘输入enter(Keys.ENTER)就可以成功 #coding = utf-8 from selenium import webdriv ...
- Python网络爬虫笔记(四):使用selenium获取动态加载的内容
(一) 说明 上一篇只能下载一页的数据,第2.3.4....100页的数据没法获取,在上一篇的基础上修改了下,使用selenium去获取所有页的href属性值. 使用selenium去模拟浏览器有点 ...
- selenium 获取某元素的 某属性 的值
selenium 获取某元素的 某属性的值 1 先通过元素定位,获得此元素的 WebElement; WebElement yuansu = driver.findElement(By.clas ...
- python3+selenium获取列表某一列的值
python3+selenium获取列表某一列的值 我们在坐自动化测试时,我们可能不想单纯的想验证一个选项卡,我们让脚本随机选择一个选项进行接下来的操作.例如我们想获取列表某一列的某一个数据(随机的) ...
随机推荐
- 开启LOH压缩?
我们知道.NET CLR的GC堆中有一种特殊的堆,它专门存放超过85000byte的对象(详见这里),这就是大对象堆(LOH). 在.NET Framework 4.5.1之前,微软并没有提供对LOH ...
- 自定义刷新tableView
// // LSTWholeTableController.m // BUDEJIE // // Created by admin on 16/8/17. // Copyright © 201 ...
- android两种基本联网方式与一种第三方开源项目的使用
安卓请求网络的三种方式 在请求网络的时候一般常用的提交方式是post或者get请求,post请求安全,传输大小无限制,但是代码量多些,get请求是浏览器有大小限制,用户提交的信息在浏览器的地址栏显示出 ...
- sfliter__except_handler4
sfliter源码在vs08中编译 出现 错误error LNK2019: unresolved external symbol __except_handler4 referenced in fun ...
- 推荐一个实用的css工具
后台程序员整天在和数据打交道,天天的活就是抱着mysql抠数据,如果让他去写网站的样式,就让人感觉力不从心,所以推荐一个twitter的团队开发的东西,几乎囊括了网站所需的样式,http://www. ...
- python类型转换、数值操作
类型转换 代码 1 函数 描述 2 int(x [,base ]) 将x转换为一个整数 3 long(x [,base ]) ...
- 【PHP】分页条函数封装
这两天在学习PHP 想做一个前端后台都包含的网站 看了一些视频发现大牛们都是将封装起来实现代码的重用性 本人技拙也写了个分页条函数的封装 分页条在用PHP网站开发中十分常用 通过封装代码来提高网站开发 ...
- Man——send(2)翻译
##纯手打 Man——send(2) -->NAME: send, sendto, sendmsg - 在socket上发送一条消息 -->总览: #include <sys/typ ...
- 《Android深度探索》(卷1)HAL与驱动开发读后感:
第一章:安卓系统移植与驱动开发概述 全书分为4篇,分别从搭建开发环境,Linux驱动和Android HAL的基础知识,开发Linux驱动的高级技术和分析典型的Linux驱动源代码4个方面介绍Andr ...
- CSipSimple的插件结构
CSipSimple的第三方编码器是以插件形式集成的,那么它是怎么实现的?我们以音频编码器为例进行说明. 一.何为插件 工程中有一个包,com.csipsimple.plugins.codecs.从包 ...