提供一个在Selenium截网页长图的实现
最近研究控制Chrome API来进行自动截图的方法。然后就看到了博客园的文章https://www.cnblogs.com/superhin/archive/2004/01/13/11481910.html 。文章说Selenium并不支持对整个页面截图,原因是Chrome虽然在开发者工具中提供了“Capture full size screenshot”的Run Command,但是在CDP中并没有提供executeCdpCommand
的命令。
为了解决这个问题,鄙人把Chromium的源代码扒了出来,然后看到这个“Capture full size screenshot”实际上走的是先设置了一个设备模拟把高度调成和页面高度一样,然后再截当前屏幕截图。
鄙人也留意了一下国外的编程社区,发现国外基本上也是这么干的,临时设置了一个设备模拟,然后截当前屏幕的截图,截好图了再把设备模拟关闭。
这样的话使用Python语言操作如下:
from selenium import webdriver
from time import sleep
import base64# 接入既有的浏览器进程
options = webdriver.ChromeOptions()
options.debugger_address = "127.0.0.1:9222"
driver = webdriver.Chrome(options=options)# 取出页面的宽度和高度
page_width = driver.execute_script("return document.body.scrollWidth")
page_height = driver.execute_script("return document.body.scrollHeight")# 直接开启设备模拟,不要再手动开devtools了,否则截图截的是devtools的界面!
driver.execute_cdp_cmd('Emulation.setDeviceMetricsOverride', {'mobile':False, 'width':page_width, 'height':page_height, 'deviceScaleFactor': 1})# 执行截图
res = driver.execute_cdp_cmd('Page.captureScreenshot', { 'fromSurface': True})# 返回的base64内容写入PNG文件
with open('hao123.png', 'wb') as f:img = base64.b64decode(res['data'])f.write(img)# 等待截图完成
sleep(15)# 关闭设备模拟
driver.execute_cdp_cmd('Emulation.clearDeviceMetricsOverride', {})
提供一个在Selenium截网页长图的实现相关推荐
- Selenium Chrome/Firefox webdriver实现截取网页长图的方法
Selenium Chrome/Firefox webdriver实现截取网页长图的方法 最近在测试使用Selenium+Firefox webdriver来对网页整体截图,由PhantomJS不再更 ...
- 谷歌浏览器怎么长截图怎么截_Chrome谷歌浏览器如何截取整个网页长图?
问题描述: 浏览网页有时需要截取当前网页局部内容或者将整个网页保存为图片: 常规方法: 1.系统自带的屏幕截图功能:(Prt Sc->Print Screen)截取整个屏幕到剪切板->去w ...
- 如何截取_【实用技巧】如何截取网页长图
最近需要截取一个网页长图,搜了下发现 Chrome 浏览器实现起来比较简单,顺便记录分享下.准备:Chrome 浏览器[1]用 Chrome 浏览器打开网页[2]按下 F12 进入开发者工具页面[3] ...
- 【实用技巧】如何截取网页长图
最近需要截取一个网页长图,搜了下发现 Chrome 浏览器实现起来比较简单,顺便记录分享下. 准备:Chrome 浏览器 [1]用 Chrome 浏览器打开网页 [2]按下 F12 进入开发者工具页面 ...
- 如何截取整个网页长图,福利到,整个网页长图该怎样截取
电脑能够让我们更好的了解世界,我们通过网络与世界发生千丝万缕的联系.有时候我们想要在网页上截取有用信息时我们可以使用QQ截屏快速完成,但是又时需要截取网页长图是就比较麻烦了,那么现在我们就来学习下整个 ...
- Chrome谷歌浏览器如何截取整个网页长图?
PC截取局部或整个网页长图-操作步骤: 1.浏览器打开需要截图的网页: 2.进入调试模式: Windows系统:按F12 苹果IOS系统:按Command +Option +I 3.打开命令窗口: w ...
- windows上使用QQ截取网页长图,支持下拉方法截图任意长的图
今天需要截取网页网页长图,看了下网上教程,都比较复杂,还是QQ截长图方便. [1]登录QQ [2] crtl + shift +a 进入截图界面,如下图 默认是没法截取长图的,点击下面的剪刀一样的快捷 ...
- Microsoft Edge 浏览器截取网页长图的方法
打开Edge 浏览器 在需要截长图的页面 点击右上角 如图下所示位置 出现 如下 弹窗 选择网页捕获 出现 捕获区域 .捕获整页 根据需求 就行选择 即可 ,如选择部分截图 选择捕获区域进行框选即可, ...
- chrome浏览器截取网页长图
利用Chrome开发者工具功能进行网页整页截图. 打开你想截图的网页,然后按下 F12(macOS 是 option + command + i)调出开发者工具,接着按「Ctrl + Shift + ...
- 电脑qq浏览器怎么滚动截长图_Mac系统如何轻松实现网页长截图功能
Mac 网页长截图 在日常工作生活中,我们经常需要使用到截图功能,简单的一页截图使用常用的截图工具即可,但是有时会碰到需要截图多页内容或者整个网页,使用截图工具分页截图再拼接不仅复杂而且耗时. 那么针 ...
最新文章
- mysql 批量更新数据类型
- 8)排序①排序算法之交换排序[1]冒泡排序法
- oracle rowID切片,Oracle中的rowid
- System verilog随机函数$urandom输出8bit随机数
- [读书笔记] - 《深度探索C++对象模型》第2章 构造函数语意学
- 线程之成员变量的线程共享
- MYSQL ALTER命令
- springboot医疗管理系统毕业设计源码015221
- tplink迷你路由器中继模式_[转载]TL-WR800N迷你型无线路由器Repeater模式(中继模式)设置教程...
- win10家庭版设置护眼色
- 兼容树莓派CM4定制产品
- python switch函数
- idea的tools下面没有deployment选项
- RT-Thread 传感器软件包归类
- [数值计算-16]:最小二乘法的求解1 - 一元二次方程解析法求解
- 三维动画制作软件测试指标,102092三维动画软件基础课程标准已审核.doc
- Android,通讯录导入,contacts,联系人
- 看历史涨知识!高速公路知多少?
- 2022年山东省中职组“网络安全”赛项比赛任务书-2
- Python GUI编程 --转发:https://www.jianshu.com/p/91844c5bca78?tdsourcetag=s_pcqq_aiomsg