项目场景:

在使用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相关推荐

  1. JS字符串 window.open() window.opener window.name window对象总结

    晚上总结了一下,发上来分享: 字符串 window.open()  window.opener  window.name  window对象等的一点总结  http://download1.csdn. ...

  2. Js中的window.parent ,window.top,window.self 详解

    在应用有frameset或者iframe的页面时,parent是父窗口,top是最顶级父窗口(有的窗口中套了好几层frameset或者iframe),self是当前窗口, opener是用open方法 ...

  3. js中Window跟window的区别

    昨天一个朋友问我Window跟window的区别: window.name=1;console.log(Window.name);//Windowconsole.log(window.name);// ...

  4. JS的window.parent ,window.top,window.self

    1.简述 在应用有frameset或者iframe的页面时, parent是父窗口, top是最顶级父窗口, self是当前窗口, 2.window.self 功能:是对当前窗口自身的引用.它和win ...

  5. JS 关于(function( window, undefined ) {})(window)写法的理解

    (function( window, undefined ) {})(window); 这个,为什么要将window和undefined作为参数传给它? (function( $, undefined ...

  6. window.parent ,window.top,window.self 详解

    转载:Js中的window.parent ,window.top,window.self 详解 在应用有frameset或者iframe的页面时,parent是父窗口,top是最顶级父窗口(有的窗口中 ...

  7. js延迟window.open window.location几秒之后跳转

    今天用ajax做个简单例子登录成功后跳转到展示数据页面,我想要登录成功后用layer提示一下再跳转页面,但是我用window.location.href会直接跳过我的layer提示,就想着让弹窗先出来 ...

  8. base64和普通字符串互转---window.btoa window.atob;图片的base64格式

    目录 一.作用 二.使用方法 一.作用 将非ASCLL码数据转换为ASCLL码数据,便于网络传输(某些系统仅支持ASCLL编码): 二.使用方法 1)测试代码: //window.btoa(" ...

  9. window.open window.showModelDialog 打开一个新窗口/子窗口中调用父窗口的方法

    window.open 只打开一个窗口是将 oNewWindow   =   window   .   open   (   sURL   ,   sName   ,   sFeatures   , ...

最新文章

  1. 3D目标检测多模态融合算法综述
  2. linux系统下top命令的详细用法、参数详解、以及模式配置
  3. go语言io reader_Go语言中的io.Reader和io.Writer以及它们的实现
  4. 学习笔记CB012: LSTM 简单实现、完整实现、torch、小说训练word2vec lstm机器人
  5. 超级备份还原v2.3.05_新手如何一键还原电脑系统(图文教程)
  6. arduino 土壤温湿度传感器_三分钟告诉你Arduino是什么
  7. log nginx 显示时间_【日常小知识系列01】Nginx日志简述
  8. VSCode使用Windows用户名而不是config中设置的User
  9. 【产品经理】产品经理进阶之路(六):互联网思维详解
  10. NV 3D Vision
  11. 释迦牟尼佛和阿弥陀佛有何区别?
  12. AVL树(动图详解)
  13. (附源码)springboot家庭财务分析系统 毕业设计 641323
  14. 【js练习】移动盒子位置,鼠标在盒子外问题
  15. 塔望食品品牌策划:中国鳗鱼行业市场现状及发展趋势分析
  16. jsnes-FC模拟器-在线玩fc游戏
  17. CATT在SAP系统中的应用
  18. 【转】手机连接pc,驱动装好,但adb devices找不到设备
  19. 前端json对象与json字符串相互转换的方式
  20. 强化学习(一)-->隐马尔科夫模型HMM-->HMM模型基础

热门文章

  1. html语言中复选按钮,命令按钮单选按钮复选按钮
  2. 杀死僵尸进程,需要这些神奇高效的 Linux 命令
  3. Mybatis实现自定义分页插件
  4. Caffe的python接口安装
  5. Fire Spell Effects特效简单记录
  6. 信号完整性之“过冲”(振铃)深度分析
  7. mysql update 左连接_使用左连接的MySQL更新查询
  8. htons函数具体解释
  9. Unity(动画层 IK动画)
  10. hph smarty下载地址