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() #退出浏览器
截图如下:

----------------------------------------------------------------------------------------
talk is cheap , show me the code.
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获取列表某一列的值 我们在坐自动化测试时,我们可能不想单纯的想验证一个选项卡,我们让脚本随机选择一个选项进行接下来的操作.例如我们想获取列表某一列的某一个数据(随机的) ...
随机推荐
- 【2019多校第一场补题 / HDU6578】2019多校第一场A题1001Blank——dp
HDU6578链接 题意 有一串字符串,仅由 {0,1,2,3}\{0, 1, 2, 3\}{0,1,2,3} 组成,长度为 nnn,同时满足 mmm 个条件.每个条件由三个整数组成:l.r.xl.r ...
- 升级 nop 4.1 Incorrect syntax near 'OFFSET'. Invalid usage of the option NEXT in the FETCH statement.
Incorrect syntax near 'OFFSET'. Invalid usage of the option NEXT in the FETCH statement. nop.web 项目 ...
- NLP interview
2019-08-26 17:19:58 1)聊实习项目 2)代码题,二维数组中的查找某个target 3)讲一些最能体现创新能力的工作,而不是一些工程上的实现 4)讲论文可以从哪些方面做创新点,文本生 ...
- junit Mockito使用入门
junit Mockito使用入门 准备 在我们进一步讨论之前,让我们探索几种不同的方法来启用Mockito测试中注释的使用. 方式一 MockitoJUnitRunner 我们拥有的第一个选择是使用 ...
- 【问题解决】-《java.lang.NoClassDefFoundException》
此问题相比与ClassNotFoundException,不容易找到,当然这两者都属于jvm加载类时的错误.导致 NoClassDefFoundException的原因:编译时不报错,运行时在内存中找 ...
- 4 Values whose Sum is 0 POJ - 2785(二分应用)
题意:输入一个数字n,代表有n行a,b,c,d,求a+b+c+d=0有多少组情况. 思路:先求出前两个数字的所有情况,装在一个数组里面,再去求后两个数字的时候二分查找第一个大于等于这个数的位置和第一个 ...
- 编译原理:非确定的自动机NFA确定化为DFA
1.设有 NFA M=( {0,1,2,3}, {a,b},f,0,{3} ),其中 f(0,a)={0,1} f(0,b)={0} f(1,b)={2} f(2,b)={3} 画出状态转换矩阵 ...
- Swagger2 初始用
1.结合Spring-Boot 引入 pom 依赖 <dependency> <groupId>io.springfox</groupId> <artifa ...
- 模块 os 系统
os系统 os模块是与操作系统交互的一个接口 os.makedirs('dirname1/dirname2') 可生成多层递归目录 os.removedirs('dirname1') 若目录为空,则删 ...
- DHCP完整过程详解及Wireshark抓包分析
DHCP,Dynamic Host Configuration Protocol,动态主机配置协议,简单来说就是主机获取IP地址的过程,属于应用层协议. DHCP采用UDP的68(客户端)和67(服务 ...