python使用selenium无法获取frame完整内容的问题

问题描述

我们使用 selenium 去打开一个页面,由于页面中使用了 frame 元素,只能获取部分内容,不能获取 frame 中的任何内容的问题。

解决方法

这里需要切换到 frame 获取内容,然后再把默认页面的内容拼接为一个完成的网页。下面是实现的代码。

python 复制代码
from selenium import webdriver

option = FirefoxOptions()
driver = webdriver.Firefox(executable_path=DRIVER_PATH, options=option)
# 打开页面
driver.get("https://tjj.sh.gov.cn/tjnj/nj22.htm?d1=2022tjnj/BZSM.html")
# 获取主页面源代码
main_page_source = driver.page_source
# 找到 frame 元素
frame_element = driver.find_element_by_xpath('//frame[@name="main"]')  # 替换为实际的 frame ID 或其他定位方式
# 切换到 frame
driver.switch_to.frame(frame_element)
# 获取 frame 内容的源代码
frame_page_source = driver.page_source
# 切回主页面
driver.switch_to.default_content()
# 合并主页面和 frame 内容
complete_page_source = main_page_source.replace('</head>', f'<base href="{driver.current_url}"></head>') + frame_page_source
# 此时 complete_page_source 包含了整个页面的内容(包括 frame 内容)
print(complete_page_source)
# 关闭 WebDriver
driver.quit()
相关推荐
钢门狂鸭30 分钟前
关于rust的crates.io
开发语言·后端·rust
Lionel_SSL1 小时前
《深入理解Java虚拟机》第三章读书笔记:垃圾回收机制与内存管理
java·开发语言·jvm
技术猿188702783512 小时前
PHP 与 WebAssembly 的 “天然隔阂”
开发语言·php·wasm
薄荷撞~可乐2 小时前
C#Task(Api)应用
开发语言·c#
独行soc2 小时前
2025年渗透测试面试题总结-66(题目+回答)
java·网络·python·安全·web安全·adb·渗透测试
another heaven4 小时前
【Qt VS2022调试时无法查看QString等Qt变量信息】解决方法
开发语言·qt
A黄俊辉A4 小时前
axios+ts封装
开发语言·前端·javascript
Y学院4 小时前
Python 数据分析:从新手到高手的“摸鱼”指南
python·数据分析
杨福瑞5 小时前
C语⾔内存函数
c语言·开发语言