no such window: target window already closed
项目场景:
在使用selenium对当前窗口操作,报错no such window: target window already closed
问题描述
在同一个窗口,打开了两个页面,接着成功关掉了第二个,页面显示的窗口也是第一个页面,然后对第一个页面进行操作,但是报错
报错代码如下:
from selenium import webdriver
from time import sleepdriver = webdriver.Chrome()
url = "https://blog.csdn.net/qq_52385631?type=blog"
driver.get(url)# 打开新标签页(第二页)
driver.find_element_by_xpath('//*[@id="userSkin"]/div[2]/div/div[2]/div/div[2]/div/article[1]/a').click()
# 获取全部页面句柄
all_handles = driver.window_handles
# 将当前句柄定位到新打开的页面
driver.switch_to.window(all_handles[-1])
# 关闭当前标签页(第二页)
driver.close()
# 接着对第一个页面进行操作,会报错 no such window: target window already closed
driver.find_element_by_xpath('//*[@id="userSkin"]/div[2]/div/div[2]/div/div[2]/div/article[1]/a').click()
原因分析:
关闭了新窗口后,浏览器默认显示了百度首页,但是当我们操作百度首页的时候, 报了错误:没有窗口,目标窗口已关闭, 因为当前窗口句柄在第二个上面,但是我们给他删掉了,在操作第二个,就会报错
解决方案:
将用switch_to.window()句柄切换到第一个标签即可,
修改代码:
from selenium import webdriver
from time import sleep"""
current_window_handle:当前窗口句柄
window_handles:所有的窗口句柄
switch_to.window(handle):跳转到指定的窗口句柄
"""driver = webdriver.Chrome()
url = "https://blog.csdn.net/qq_52385631?type=blog"
driver.get(url)
# 当前窗口位置
search_window = driver.current_window_handle
# # 打开新标签页(第二页)
driver.find_element_by_xpath('//*[@id="userSkin"]/div[2]/div/div[2]/div/div[2]/div/article[1]/a').click()
sleep(1)
# 获取全部页面句柄
all_handles = driver.window_handles
# 将当前句柄定位到新打开的页面
driver.switch_to.window(all_handles[-1])
# 关闭当前标签页(第二页)
driver.close()
sleep(1)
for handle in all_handles:if handle == search_window:driver.switch_to.window(handle) # 跳转到百度首页窗口driver.find_element_by_xpath('//*[@id="userSkin"]/div[2]/div/div[2]/div/div[2]/div/article[3]/a').click()
no such window: target window already closed相关推荐
- JS字符串 window.open() window.opener window.name window对象总结
晚上总结了一下,发上来分享: 字符串 window.open() window.opener window.name window对象等的一点总结 http://download1.csdn. ...
- Js中的window.parent ,window.top,window.self 详解
在应用有frameset或者iframe的页面时,parent是父窗口,top是最顶级父窗口(有的窗口中套了好几层frameset或者iframe),self是当前窗口, opener是用open方法 ...
- js中Window跟window的区别
昨天一个朋友问我Window跟window的区别: window.name=1;console.log(Window.name);//Windowconsole.log(window.name);// ...
- JS的window.parent ,window.top,window.self
1.简述 在应用有frameset或者iframe的页面时, parent是父窗口, top是最顶级父窗口, self是当前窗口, 2.window.self 功能:是对当前窗口自身的引用.它和win ...
- JS 关于(function( window, undefined ) {})(window)写法的理解
(function( window, undefined ) {})(window); 这个,为什么要将window和undefined作为参数传给它? (function( $, undefined ...
- window.parent ,window.top,window.self 详解
转载:Js中的window.parent ,window.top,window.self 详解 在应用有frameset或者iframe的页面时,parent是父窗口,top是最顶级父窗口(有的窗口中 ...
- js延迟window.open window.location几秒之后跳转
今天用ajax做个简单例子登录成功后跳转到展示数据页面,我想要登录成功后用layer提示一下再跳转页面,但是我用window.location.href会直接跳过我的layer提示,就想着让弹窗先出来 ...
- base64和普通字符串互转---window.btoa window.atob;图片的base64格式
目录 一.作用 二.使用方法 一.作用 将非ASCLL码数据转换为ASCLL码数据,便于网络传输(某些系统仅支持ASCLL编码): 二.使用方法 1)测试代码: //window.btoa(" ...
- window.open window.showModelDialog 打开一个新窗口/子窗口中调用父窗口的方法
window.open 只打开一个窗口是将 oNewWindow = window . open ( sURL , sName , sFeatures , ...
最新文章
- 3D目标检测多模态融合算法综述
- linux系统下top命令的详细用法、参数详解、以及模式配置
- go语言io reader_Go语言中的io.Reader和io.Writer以及它们的实现
- 学习笔记CB012: LSTM 简单实现、完整实现、torch、小说训练word2vec lstm机器人
- 超级备份还原v2.3.05_新手如何一键还原电脑系统(图文教程)
- arduino 土壤温湿度传感器_三分钟告诉你Arduino是什么
- log nginx 显示时间_【日常小知识系列01】Nginx日志简述
- VSCode使用Windows用户名而不是config中设置的User
- 【产品经理】产品经理进阶之路(六):互联网思维详解
- NV 3D Vision
- 释迦牟尼佛和阿弥陀佛有何区别?
- AVL树(动图详解)
- (附源码)springboot家庭财务分析系统 毕业设计 641323
- 【js练习】移动盒子位置,鼠标在盒子外问题
- 塔望食品品牌策划:中国鳗鱼行业市场现状及发展趋势分析
- jsnes-FC模拟器-在线玩fc游戏
- CATT在SAP系统中的应用
- 【转】手机连接pc,驱动装好,但adb devices找不到设备
- 前端json对象与json字符串相互转换的方式
- 强化学习(一)-->隐马尔科夫模型HMM-->HMM模型基础