学习Python中Selenium模块的基本用法(15:窗口操作)

  采用Selenium模块在浏览器中打开页面后,点击页面中的链接或按钮时新建标签页并跳转过去,此时想要切换回之前页面的话,可以使用窗口句柄功能。
  使用Selenium模块打开的每个页面都对应唯一的窗口句柄,采用driver.current_window_handle能够获取当前页面的窗口句柄,调用driver.switch_to.window函数可以切换到指定窗口句柄对应的页面。
  以百度搜索验证窗口句柄功能,打开百度网站并搜索内容,点击第一个搜索结果后又返回百度搜索页面,示例代码及运行效果如下所示:

python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")

time.sleep(2)

search_box =driver.find_element(By.ID, "chat-textarea")   # 百度搜索框的ID为"kw"
search_box.send_keys("DeepSeek官网")
search_box.send_keys(Keys.RETURN)

time.sleep(3)

curWinHandle=driver.current_window_handle

first_result = driver.find_element(By.CLASS_NAME, "sc-link")
first_result.click()

time.sleep(3)

driver.switch_to.window(curWinHandle)

  除了上述获取并切换窗口句柄的属性和函数,Selenium模块还提供以下与窗口句柄相关的属性或函数:
  1)window_handles:获取浏览器当前所有的窗口句柄;
  2)close():关闭当前窗口;
  3)quit():关闭所有关联窗口并终止WebDriver会话;
  4)switch_to.new_window(type_hint):创建一个新窗口或标签页并自动切换过去,type_hint可为'tab'或'window',仅Selenium 4及以上版本支持该函数。
  Selenium官网文档中说没有区分窗口和标签页,但是switch_to.new_window函数的输入参数却区分了标签页(tab)和窗口(window),经测试,如果输入参数是tab,是在当前浏览器中创建新的标签页,如果输入参数是window,则会新打开一个浏览器并在浏览器中打开指定的网址。测试代码及运行效果如下所示:

python 复制代码
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")

time.sleep(2)

driver.switch_to.new_window('tab')
driver.get("https://mail.163.com/")

time.sleep(2)

driver.switch_to.new_window('window')
driver.get("https://mail.qq.com/")

for window_handle in driver.window_handles:
    driver.switch_to.window(window_handle)
    print(driver.title)


参考文献:

1https://www.selenium.dev/zh-cn/

2https://www.selenium.dev/zh-cn/documentation/webdriver/getting_started/

3https://blog.csdn.net/kk_lzvvkpj/article/details/148610502

4https://registry.npmmirror.com/binary.html?path=chromedriver/

5https://chromedriver.chromium.org/

相关推荐
叫我:松哥13 小时前
基于神经网络的汽车与自行车的分类算法设计与实现,采用ResNet50和迁移学习,准确率达到99%
人工智能·python·神经网络·机器学习·分类·汽车·迁移学习
靖待13 小时前
【解决方法】python写Excel单元格截断长文本
python·excel·解决方法
우리帅杰13 小时前
【AI测试】Python AI大模型介绍
开发语言·人工智能·python·ai编程
li-xun13 小时前
我给自己的 Django 博客做了一个在线工具箱:从图片压缩到正则测试,尽量都在浏览器本地处理
后端·python·django
geovindu13 小时前
python: Generators Pattern
开发语言·python·设计模式·生成器模式
没有不重的名么13 小时前
spyder使用教程
开发语言·python
Wonderful U13 小时前
Python+Django实战|线上问卷与投票调研系统:自定义题型、问卷发布、链接分享、答卷收集、数据可视化、报表导出
python·信息可视化·django
Cloud_Shy61813 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第五章 Item 36 - 39)
开发语言·人工智能·笔记·python
zmzb010313 小时前
Python课后习题训练记录Day128
开发语言·python
AIFQuant13 小时前
全球行情自动更新、多品种展示、性能优化实战指南
python·性能优化·金融·node.js·restful