python实现selenium截图的两种方法
作者:魔都吴所谓 发布时间:2023-08-16 06:26:57
标签:python,selenium,截图
可以使用虚拟屏幕的方式,在虚拟屏幕上运行浏览器并进行截图操作,这样就不会影响当前屏幕的展示。
具体实现可以使用Xvfb和pyvirtualdisplay库。Xvfb是虚拟X11服务器,可以在内存中创建一个虚拟屏幕,而pyvirtualdisplay是一个Python库,可以在Python代码中启动和控制Xvfb。
pyvirtualdisplay
以下是一个例子:
from pyvirtualdisplay import Display
from selenium import webdriver
# 启动虚拟屏幕
display = Display(visible=0, size=(800, 600))
display.start()
# 创建浏览器实例并访问页面
browser = webdriver.Chrome()
browser.get('https://www.google.com')
# 截图并保存
browser.save_screenshot('screenshot.png')
# 关闭浏览器和虚拟屏幕
browser.quit()
display.stop()
在这个例子中,我们先启动虚拟屏幕,然后创建了一个Chrome浏览器实例,并访问了谷歌首页。接着我们使用save_screenshot方法对页面进行截图,并保存到本地文件。最后我们关闭了浏览器和虚拟屏幕。
请注意,虚拟屏幕的大小应该与浏览器窗口大小相同,否则可能会导致截图不完整。在代码中,我们指定了虚拟屏幕的大小为800x600,你可以根据实际情况进行修改。
Q&A
任务太多不是要启动很多虚拟屏幕,这样是不是很耗费内存
是的,多开虚拟屏幕会占用大量内存。
Xvfb
你可以考虑使用Xvfb(虚拟X11窗口系统)来模拟屏幕,这样截图的时候就不会弹出页面了。以下是基于Python的Xvfb截图代码示例:
import os
import time
from selenium import webdriver
from pyvirtualdisplay import Display
from PIL import Image
# 设置虚拟屏幕分辨率
display = Display(visible=0, size=(1920, 1080))
display.start()
# 启动浏览器
browser = webdriver.Chrome()
# 打开网页
browser.get('https://www.baidu.com')
# 等待页面加载完成
time.sleep(5)
# 截图
browser.save_screenshot('screenshot.png')
# 退出浏览器
browser.quit()
# 关闭虚拟屏幕
display.stop()
# 打开截图
Image.open('screenshot.png').show()
这个示例中,我们使用了pyvirtualdisplay库来创建虚拟屏幕,Chrome浏览器以及Selenium来打开网页和截图,最后使用Pillow库打开截图。注意,这种方式需要在Linux或者macOS环境下运行。
来源:https://blog.csdn.net/qq_41604569/article/details/129833615
0
投稿
猜你喜欢
- 项目使用Pyqt作为UI框架,使用相机线程捕捉image,并在QGraphicsView中显示,遇到以下问题:1、采集的数据为nparray
- 慢查询首先,无论进行何种优化,开启慢查询都算是前置条件。慢查询机制,将记录过慢的查询语句(事件),从而为DB维护人员提供优化目标。检查慢查询
- 本文详细讲述了python的内嵌time模块的用法。分享给大家供大家参考之用。具体分析如下: 一、简介time模块提供各种操作时
- CSS Sprites技术不新鲜,早在2005年 CSS Zengarden 的园主 Dave Shea 就在 ALA
- VUE 集成LODOP插件打印Lodop、C-Lodop使用说明及样例http://www.lodop.net/LodopDemo.html
- 02条件语句和while循环三目运算a = 6#原判断语句if a > 5:print(True)else:print(False)#
- 我们使用tp或者yii2的时候,会将网站的前台和后台按照模块分组。yii2的高级模板已经帮我们划分好了,tp系列框架需要自己配置分组。那么l
- 目录概述模板模式生活案例策略模式涉及到两个角色UML总结示例概述模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式
- 学了面向对象三大特性继承,多态,封装。今天我们看看面向对象的一些进阶内容,反射和一些类的内置函数。一、isinstance和issubcla
- 一、clear(清空字典内容)stu = { 'num1':'Tom', '
- 监控Linux服务器嘛,脚本逻辑基本上是用os.popen模块,然后把获取到的结果通过split切分成一个list,再拿目标list值和我阈
- GitHub : https://github.com/jayknoxqu/id-number-util身份组成方式中华人民共和国国家标准G
- Oracle客户端NLS_LANG设置 OracleWindowsMicrosoftUnixBash 1. NLS_LANG 参数组成 NL
- 刚才运行了一段代码,来查看Request.ServerVariables里面有多少值,看了一下,共50个!代码<%=Request.S
- <SCRIPT language="JavaScript"><!-- Beginfunction mo
- 一、引言这个五一假期自驾回老家乡下,家里没装宽带,用手机热点方式访问网络。这次回去感觉4G信号没有以前好,通过百度查找小说最新更新并打开小说
- 图片文字分割的时候,常用的方法有两种。一种是投影法,适用于排版工整,字间距行间距比较宽裕的图像;还有一种是用OpenCV的轮廓检测,适用于文
- 本文实例为大家分享了python创建单词词库的具体代码,供大家参考,具体内容如下基本思路:以COCA两万单词表为基础,用python爬取金山
- 本文实例为大家分享了python3 smtplib发送邮件的具体代码,供大家参考,具体内容如下smtplib模块是smtp简单邮件传输协议客
- 刚开始,根据我的想法,这个很简单嘛,上sql语句delete from zqzrdp where tel in (select min(dp