Python + selenium如何截图!

废话不多说,直接进入正题

一、直接截取网页全屏

截全屏的时候,我们用到的内置方法为save_screenshot("demo1.png")

from selenium import webdriver
from time import sleepclass test:driver = webdriver.Chrome()driver.maximize_window()driver.get('https://www.baidu.com/')sleep(2)# 截取全屏driver.save_screenshot("demo1.png")

运行成功之后,打开截图文件,如下所示:

二、截取页面上固定元素的图片

咱们以截取百度首页“百度一下”的按钮为例。

from selenium import webdriver
from time import sleepclass test:# 打开谷歌浏览器driver = webdriver.Chrome()# 网页全屏显示driver.maximize_window()# 访问百度首页driver.get('https://www.baidu.com/')# 强制等待2秒sleep(2)# 使用ID定位的方法获取"百度一下"的元素element = driver.find_element_by_id("su")# 截图element.screenshot("element.png")# 关闭浏览器driver.quit()

运行之后,打开图片文件,如下图所示:

图片

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

三、截取指定位置的图片

from selenium import webdriver
from time import sleep
from PIL import Imageclass test:driver = webdriver.Chrome()driver.maximize_window()driver.get('https://www.baidu.com/')sleep(2)driver.save_screenshot("baidu1.png")element = driver.find_element_by_id("kw")print("获取元素的坐标")location = element.locationprint(location)print(element.size)# 计算元素上、下、左、右的位置top = element.location['y']bottom = element.location['y'] + element.size['height']left = element.location['x']right = element.location['x'] + element.size['width']print(top, bottom, left, right)im = Image.open('baidu1.png')im = im.crop((left, top, right,bottom))im.show()im.save("baidu2.png")

四、图片拼接

from selenium import webdriver
from PIL import Imagedriver = webdriver.Chrome()
# 设置浏览器窗口最大化
driver.maximize_window()  # 设置打开页面最大化,目的是更好的截取错误图
# 打开税网
driver.get("https://www.csdn.net/")
# 1. 截取当前页面
driver.save_screenshot('result.png')def join_images(png1, png2, size=0, output='result.png'):"""图片拼接:param png1: 图片1:param png2: 图片2:param size: 两个图片重叠的距离:param output: 输出的图片文件:return:"""# 图片拼接img1, img2 = Image.open(png1), Image.open(png2)size1, size2 = img1.size, img2.size  # 获取两张图片的大小joint = Image.new('RGB', (size1[0], size1[1]+size2[1]-size))    # 创建一个空白图片# 设置两张图片要放置的初始位置loc1, loc2 = (0, 0), (0, size1[1] - size)# 分别放置图片joint.paste(img1, loc1)joint.paste(img2, loc2)# 保存结果joint.save(output)JS = {'滚动到页尾': "window.scroll({top:document.body.clientHeight,left:0,behavior:'auto'});",'滚动到': "window.scroll({top:%d,left:0,behavior:'auto'});",
}
# 获取body大小
body_h = int(driver.find_element_by_xpath('//body').size.get('height'))
# 计算当前页面截图的高度
# (使用driver.get_window_size()也可以获取高度,但有误差,推荐使用图片高度计算)
current_h = Image.open('result.png').size[1]
image_list = ['result.png']  # 储存截取到的图片路径for i in range(1, int(body_h/current_h)):# 1. 滚动到指定锚点driver.execute_script(JS['滚动到'] % (current_h * i))# 2. 截图driver.save_screenshot(f'test_{i}.png')join_images('result.png', f'test_{i}.png')
# 处理最后一张图
driver.execute_script(JS['滚动到页尾'])
driver.save_screenshot('test_end.png')
# 拼接图片
join_images('result.png', 'test_end.png', size=current_h-int(body_h % current_h))

运行之后的结果为:

图片

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/7521.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《架构思维:从程序员到CTO》:通往顶级架构师之路

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…

PCIE协议-1

1. PCIe结构拓扑 一个结构由点对点的链路组成,这些链路将一组组件互相连接 - 图1-2展示了一个结构拓扑示例。该图展示了一个称为层级结构的单一结构实例,由一个根复合体(Root Complex, RC)、多个端点(I/O设备&#xf…

ubuntu20部署3d高斯

3d高斯的链接:https://github.com/graphdeco-inria/gaussian-splatting 系统环境 ubuntu20的系统环境,打算只运行训练的代码,而不去进行麻烦的可视化,可视化直接在windows上用他们预编译好的exe去可视化。(因为看的很…

NLP中常见的tokenize方式及token类型

目录 Tokenizer的细节与计算方式Tokenizer的计算方式各种Tokenizer的优缺点 NLP中常用的Tokens单词Tokens(Word Tokens)子词Tokens(Subword Tokens)字符Tokens(Character Tokens)字节Tokens(Byt…

C语言函数

1.函数是什么 在数学里,函数是一种对应关系,而 C 语言里的函数和数学中的函数具有相似点,但是有很大的不同,甚至有些人认为“函数”这个名词不够恰当。准确来说,C 函数的函数是一种子程序,您可以去 Wiki 百科查看对子程序的解释。 所谓的子程序,实际上就是大型程序中的…

[linux] pytorch各种报错

1. matplot lib "fatal IO error 25 (Inappropriate ioctl for device) on X server “localhost:10.0” 解决方案: import matplotlib matplotlib.use(Agg) 2. Error ALSA Carla 0.9.9 报错信息为: 4.24.3-0UE4Release-4.24 518 0 Disabling c…

暗区突围pc端资格发放了吗 暗区突围pc测试资格怎么获取

暗区突围pc端资格发放了吗 暗区突围pc测试资格怎么获取 暗区突围是一款很火爆的第一人称射击网游,现在终于要上线PC端啦!小伙伴们是不是已经迫不及待想要体验电脑上的硬核射击快感了?暗区突围pc端资格已经陆续发放,想要参与PC端…

TC8002D 是一颗带关断模式的音频功放IC

一、一般概述 TC8002D是一颗带关断模式的音频功放IC。在5V输入电压下工作时,负载(3Ω)上的平均功率 为3 W,且失真度不超过10%。而对于手提设备而言,当VDD作用于关断端时,TC8002D将会进入关断模式,此时的功耗极…

Redis的几种集群模式

主从复制模式: 主从复制是Redis最简单的集群模式。这个模式主要是为了解决单点故障的问题,所以将数据复制多个副本中,这样即使有一台服务器出现故障,其他服务器依然可以继续提供服务。数据会在一个主节点(master&#…

TypeScript综合练习2(文本处理)

Text Processor You’ll practice creating and transforming arrays of strings. Hello, fellow text editing and type setting enthusiast! I hear you have a dual interest in both TypeScript and and type scripts. That’s great because I have a few projects for yo…

探索淘宝API接口对接(属性规格丨sku价格丨详情图丨优惠券等):打造智能电商解决方案

一、引言 随着电子商务的快速发展,越来越多的企业和开发者希望通过自动化和智能化的方式接入电商平台,以实现更高效的数据交互和业务流程。淘宝作为中国最大的电商平台之一,其提供的API接口成为了众多企业和开发者关注的焦点。本文将探讨淘宝…

【spring】Bean的生命周期回调函数和Bean的循环依赖

目录 1、Bean的生命周期 2、Bean的生命周期回调函数 2.1、初始化的生命周期回调 2.2、销毁的生命周期回调 3、Bean的循环依赖 1、Bean的生命周期 spring的bean的生命周期主要是创建bean的过程,一个bean的生命周期主要是4个步骤:实例化,…

视频剪辑图文实例:一键操作,轻松实现视频批量片头片尾减时

视频剪辑是现代媒体制作中不可或缺的一环,而批量处理视频更是许多专业人士和爱好者的常见需求。在剪辑过程中,调整视频的片头片尾时长可以显著提升视频的质量和观感。本文将通过图文实例的方式,向您展示如何一键操作,轻松实现视频…

直播录屏怎么录?分享3种方法

随着网络直播的兴起,直播录屏已成为众多网友记录精彩瞬间、分享有趣内容的重要工具。直播录屏不仅能帮助我们回顾和保存直播中的精彩片段,还能为创作者提供更多的素材和灵感。 本文将为大家介绍3种直播录屏的方法,帮助大家能够更好地利用这一…

【IEEE独立出版|往届均已成功检索】ISPDS 2024诚邀投稿参会

第五届信息科学与并行、分布式处理国际学术会议(ISPDS 2024) 2024 5th International Conference on Information Science, Parallel and Distributed Systems 2024年5月31-6月2日 | 中国广州NEWS:会议已在格林威治大学官网上线会议已经上线到…

配置Socks5代理的詳細步驟

Socks5代理的主要優點是它能夠處理任何類型的網路流量,包括Web流覽、電子郵件、檔傳輸等。 運行Socks5代理服務的伺服器,可以是一臺物理伺服器,也可以是一臺虛擬私有伺服器。 其次,我們需要在伺服器上安裝Socks5代理軟體。常用的…

学术咸鱼入门指南(2)

巧用思维导图阅读文献 化整为零:读文献,从拆分文章的结构开始 大家在初步接触自己学科的论文时,要了解清楚基本的范式,日后读起来就比较顺了。 科研论文的第一部分,是文章的标题,摘要和关键词&#xff0…

【MySQL】连接查询(JOIN 关键字)—— 图文详解:内连接、外连接、左连接、左外连接、右连接、右外连接

文章目录 连接查询驱动表连接查询分类 内连接(INNER JOIN)内连接 —— 等值连接内连接 —— 自然连接(NATURAL JOIN)内连接 —— 交叉连接(笛卡尔积) 外连接(OUTER JOIN)外连接 ——…

nodejs里面的 http 模块介绍和使用

Node.js的HTTP模块是一个核心模块,它提供了很多功能来创建HTTP服务器和发送HTTP请求。 http.Server是一个基于事件的http服务器,内部是由c实现的,接口是由JavaScript封装。 http.request是一个http客户端工具。 用户向服务器发送数据。 创…

范式的知识点

A. 有关“键”的概念 1) 超键:在关系中能唯一标识元组的属性或属性集称为关键模式的超键。 2) 候选键:不含有多余属性的超键称为候选键。也就是在候选键中在删除属性就不是键了。 3) 主键:用户选作元组标识的候选键称为主键。一般…