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

网页的切换与嵌套

网页的切换与嵌套

网页的切换

在浏览器窗口中如果点击超链接标签会在当前的浏览器窗口中显示新的数据,但有些超链接标签点击后却会在一个新的窗口显示数据,这种情况下就无法对新的开的窗口页面进行操作了。
基于这种情况,我们就需要使用driver.switch_to.window()进行窗口切换,从而保证能够对打开的新窗口页面进行处理:

# 1. 获取当前所有的窗口
current_windows = driver.window_handles# 2. 根据窗口索引进行切换
driver.switch_to.window(current_windows[1])

程序案例:

import time
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
# 1、实例化浏览器
driver = Chrome()# 2、打开对应的网页
driver.get('https://www.baidu.com')# 3、设置浏览器窗口最大化
driver.maximize_window()# 4、通过LINK_TEXT定位新闻的按钮元素(精确搜索)
button_element = driver.find_element(By.LINK_TEXT, '新闻')# 5、对百度新闻的标签进行点击
button_element.click()# 6、获取当前所有的窗口
current_windows = driver.window_handles# 7、根据窗口索引进行切换
driver.switch_to.window(current_windows[1])# 8、对打开的浏览器网页进行截屏,格式为png,否则会有警告
driver.save_screenshot('baidu.png')
time.sleep(10)

网页的嵌套

网页嵌套是HTML中的一种技术,专业名称为iframe(内嵌框架)。它允许在一个网页内嵌入另一个独立的网页。通过使用iframe,可以在当前页面中显示来自不同源或相同源的其他网页、文档或应用程序的内容,从而提升爬虫采集数据的难度。

当使用selenium访问网页时,默认是无法访问frame的内容的,对应的解决思路是通过调用driver.switch_to.frame()来切换嵌套的网页中,从而访问内嵌网页中的元素对象。

网易云歌单案例:

import time
from selenium import webdriver
from selenium.webdriver.common.by import By# 1、创建浏览器对象并打开网易云音乐的网页
driver = webdriver.Chrome()
driver.get('https://music.163.com/')# 2、等待3秒,保证嵌套页面加载完毕
time.sleep(3)# 3、切换到嵌套页面中
driver.switch_to.frame('contentFrame')# 4、定位网页中第一个歌单a标签,并点击a标签进入歌单详情页
element = driver.find_element(By.XPATH, '//*[@id="discover-module"]/div[1]/div/div/div[1]/ul/li[1]/div/a')
element.click()time.sleep(3)
http://www.lryc.cn/news/424984.html

相关文章:

  • 基于飞桨框架的稀疏计算使用指南
  • 启明云端WT32C3-S6物联网模块,乐鑫ESP32-C3芯片技术应用
  • 超越流水线,企业研发规范落地新思路
  • 财务会计与管理会计(四)
  • 回归分析系列1-多元线性回归
  • web小游戏开发:拼图——蜂巢拼图
  • springCloud集成activiti5.22.0流程引擎(分支)
  • ppt模板免费网站有哪些?自动美化工具推荐
  • java实现解析pdf格式发票
  • 数据结构初阶——算法复杂度超详解
  • ArcGIS Pro SDK (十二)布局 4 预定义的形状和箭头
  • 在 Ubuntu 14.04 服务器上安装 ISPConfig3 的方法
  • ELK学习笔记
  • Python+Selenium+Pytest+POM自动化测试框架封装详解
  • Hidden Marlov Model(HMM)
  • mamba的安装及下载速度慢问题解决
  • 【Linux入门】Linux环境搭建
  • CPU缓存一致性机制详解
  • Android 12系统源码_屏幕设备(一)DisplayManagerService的启动
  • 《AI视频类工具之十——​D-ID》
  • 【网络】局域网LAN、广域网WAN、TCP/IP协议、封装和分用
  • 我司搜索中台的三次演变
  • html+css+js网页设计 电商模版4个页面
  • 区块链技术在Facebook中的潜力:未来趋势与挑战
  • dockerfile自定义镜像
  • 【工作状态】如何保持专注?
  • 欧科云链研究院对话:风浪越大鱼越贵—链上数据洞悉加密市场规律
  • SQLite库笔记:日期和时间函数
  • Linux开发板运行报错/system/bin/sh: can‘t create /dev/leds: Permission denied
  • 月薪5W的项目经理是如何面试的?这份面试攻略请收好!