当前位置: 首页 > news >正文

Selenium 切换窗口

'''
环境:
Python 3.8
selenium==3.141.0
urllib3==1.26.19
''''''
说明:
driver.current_window_handle # 返回当前窗口的句柄
driver.window_handles # 返回当前由driver启动所有窗口句柄,是个列表
driver.switch_to.window(handle) # 根据 handle 切换窗口
'''
# -*- coding: UTF-8 -*-from selenium import webdriver
import time# 谷歌浏览器位置
CHROME_PATH = r'xxx\\chrome.exe'
# 谷歌浏览器驱动地址
CHROMEDRIVER_PATH = r'xxx\\chromedriver.exe'options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option("useAutomationExtension", False)
options.binary_location = CHROME_PATH
driver = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH, options=options)# 第一个窗口 打开百度
driver.get('https://www.baidu.com/')
time.sleep(3)
handle_baidu = driver.current_window_handle
print(handle_baidu)  # CDwindow-E8B2BA11FBCE9C5FF7A39E34C8056B88
print(driver.title)  # 百度一下,你就知道# 第二个窗口 打开 Bing
new_tab_url = 'https://cn.bing.com/'
driver.execute_script(f'window.open("{new_tab_url}", "_blank");')
# 确保第二个窗口打开
time.sleep(3)
# 获取所有窗口句柄
handles = driver.window_handles
print(handles)  # ['CDwindow-E8B2BA11FBCE9C5FF7A39E34C8056B88', 'CDwindow-8B22C4B42A61E59D68C384C9E4C6653B']# 切换到最新窗口
driver.switch_to.window(handles[-1])
print(driver.title)  # 必应# 切换到 百度窗口
driver.switch_to.window(handle_baidu)
print(driver.title)  # 百度一下,你就知道# 设置固定等待
time.sleep(50)
driver.quit()
'''
参考:
python自动化测试selenium(四)切换页面、切换窗口
https://blog.csdn.net/u010835747/article/details/125501993
'''

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • AI与Python共舞:如何利用深度学习优化推荐系统?(2)
  • 1.Python学习笔记
  • Spring Boot集成jasypt快速入门Demo
  • 54、一维和二维自组织映射(matlab)
  • 乐清网站建设规划书
  • sqlserver 当前时间
  • cgroup memory使用超过限制会怎样?
  • Git 安装
  • Spring Boot手写starter
  • 【机器学习】在【Pycharm】中的实践教程:使用【逻辑回归模型】进行【乳腺癌检测】
  • 淘宝商品评论爬虫实战指南:基于Requests与Cookies的实现
  • 中英双语介绍伦敦金融城(City of London)
  • mac有什么解压软件 mac怎么解压7z软件 苹果电脑好用的压缩软件有哪些
  • python通过COM Interface控制CANoe
  • 【知识整理】4P4C4R营销战略
  • crontab执行失败的多种原因
  • express如何解决request entity too large问题
  • Javascript Math对象和Date对象常用方法详解
  • javascript数组去重/查找/插入/删除
  • js中forEach回调同异步问题
  • LeetCode18.四数之和 JavaScript
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • mysql外键的使用
  • php的插入排序,通过双层for循环
  • React-redux的原理以及使用
  • select2 取值 遍历 设置默认值
  • Sequelize 中文文档 v4 - Getting started - 入门
  • 普通函数和构造函数的区别
  • 悄悄地说一个bug
  • 如何在GitHub上创建个人博客
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 组复制官方翻译九、Group Replication Technical Details
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​io --- 处理流的核心工具​
  • ​如何防止网络攻击?
  • #Z0458. 树的中心2
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (回溯) LeetCode 46. 全排列
  • (算法设计与分析)第一章算法概述-习题
  • (转载)hibernate缓存
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .net CHARTING图表控件下载地址
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .Net下的签名与混淆
  • .net下简单快捷的数值高低位切换
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • :“Failed to access IIS metabase”解决方法
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • @vue/cli 3.x+引入jQuery
  • [20160902]rm -rf的惨案.txt
  • [C/C++]数据结构----顺序表的实现(增删查改)
  • [C++] 轻熟类和对象