大型情感剧集Selenium:8_selenium网页截图的四种方法
有时候,有时候,你会相信一切有尽头…当你的代码走到了尽头,那么保留最后一刻的状态尤为重要,此时你该如何操作?记录日志…没有将浏览器当前的状态进行截图来的直观!
那么,selenium截取截屏,有哪些方法呢?有四个。
说到讲方法,什么都没有直接看源码来的直观,我带大家走一波,跟进别迷路!
1. 先来看看 save_screenshot(filename)
"""
def save_screenshot(self, filename):
Saves a screenshot of the current window to a PNG image file. Returns
False if there is any IOError, else returns True. Use full paths in
your filename.
:Args:
- filename: The full path you wish to save your screenshot to. This
should end with a `.png` extension.
:Usage:
driver.save_screenshot('/Screenshots/foo.png')
"""
return self.get_screenshot_as_file(filename)
可以看到要求,保存的文件,必须是以.png结尾的,朋友们要记得!然后他return了另外一个方法,接着走…
2. get_screenshot_as_file
def get_screenshot_as_file(self, filename):
"""
Saves a screenshot of the current window to a PNG image file. Returns
False if there is any IOError, else returns True. Use full paths in
your filename.
:Args:
- filename: The full path you wish to save your screenshot to. This
should end with a `.png` extension.
:Usage:
driver.get_screenshot_as_file('/Screenshots/foo.png')
"""
if not filename.lower().endswith('.png'):
warnings.warn("name used for saved screenshot does not match file "
"type. It should end with a `.png` extension", UserWarning)
png = self.get_screenshot_as_png()
try:
with open(filename, 'wb') as f:
f.write(png)
except IOError:
return False
finally:
del png
return True
可以看到,这里有一个文件结尾判断,封装了UserWarning,会给出提示信息并终止程序…
看到这两段代码,你就知道以后yoga那个方法保存文件了吧。肯定用get_screenshot_as_file,干嘛平白无故多一次回调函数…
所以,看源码的好处就是,不至于被某些帖子所误导…如下贴:
哥们也是好心整理,但以后还是看我的帖子吧,不迷路….我说了有四个,这才两个啊,还剩下俩呢?
3. get_screenshot_as_png()
看上段代码中的这行png = self.get_screenshot_as_png(),前面俩只是传销最底层发广告的,这是个业务部长…
你看到先创建,又在finally中 del png,就应该知道,它存中间变量…取方法内部看看
def get_screenshot_as_png(self):
"""
Gets the screenshot of the current window as a binary data.
:Usage:
driver.get_screenshot_as_png()
"""
return base64.b64decode(self.get_screenshot_as_base64().encode('ascii'))
binary data.,嘛意思?二进制数据。
怎么来的?刚才说它是业务部长,因为这里还有西北五省总代理,as_png通过b64decode解码得到了二进制数据。接着走
4. get_screenshot_as_base64()
def get_screenshot_as_base64(self):
"""
Gets the screenshot of the current window as a base64 encoded string
which is useful in embedded images in HTML.
:Usage:
driver.get_screenshot_as_base64()
"""
return self.execute(Command.SCREENSHOT)['value']
不知道初高中大家有买过一本辅导书没,叫各个击破,学代码应该怎么学,如果你有时间,对模块感兴趣,就该层层剖析的去看!有空大家可以继续往深里面瞅….
看到这里,四个方法看完了…但他们也只是封装调用的,知识点还深着呢。但这四个方法是干嘛的,怎么用,什么关系,至少大家明白了吧!还怕面试的时候问吗?随便来…盘它!
总结一句:
方法 | 说明 |
---|---|
save_screenshot | 趁早别用 |
get_screenshot_as_file | 保存网页截图 |
get_screenshot_as_png | 获取二进制数据流 |
get_screenshot_as_base64 | base64编码原始数据 |
走个例子吧:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.jianshu.com/u/d23fd5012bed")
driver.get_screenshot_as_file('BreezePython.png')
driver.close()
是不是so esay,还觉得编程难吗?难…因为这只是最基础的,明天和大家讲如何截取网页中的局部内容,以及selenium网页长图截取,不过,明天好像周五晚上例行休息啊,看明天阅读量了,多就不休了,哈哈…
The End
今天的selenium内容就更新到这里,如果觉得这篇文章对你有帮助,可以点击文章右下角的“在看”。
欢迎将这篇文章或我的微信公众号【清风Python】分享给更多喜欢python的人,谢谢你们的支持,学无止境。
作者:清风Python
大型情感剧集Selenium:8_selenium网页截图的四种方法的更多相关文章
- 大型情感剧集Selenium:9_selenium配合Pillow完成浏览器局部截图
网页截图 上次提到了selenium的四种截图方法,最终截图了整张网页.但很多时候,我们仅仅需要截图部分的内容.比如截取某个关键信息,或者现在已经不常见的截图验证码(现在都是各种按规则点击-).那么我 ...
- 大型情感剧集Selenium:4_老中医教你(单/多/下拉框)选项定位 #华为云·寻找黑马程序员#
今天讲什么 讲什么标题说了,讲selenium的单选.多选.下拉框选项定位.但其实这东西,没什么太多说的,又比较枯燥,那该怎么让这一集selenium的课程变得有趣呢?有请老中医,哈哈- 怎么样,这个 ...
- 大型情感剧集Selenium:6_selenium中的免密登陆与cookie操作 #华为云·寻找黑马程序员#
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- 大型情感剧集Selenium:6_selenium中的免密登陆与cookie操作
网站登录 现在各大平台在反爬虫功能上,可谓花样繁多.总结下来按照破解成功率排名,最高的是滑动解锁.其次是验证码数字.之后是一次点击对应的汉字,最后是想12306之前那种反人类的让你说那些是奶糖吧,哈哈 ...
- 大型情感剧集Selenium:6_selenium中的免密登陆与cookie操作【华为云技术分享】
网站登录 现在各大平台在反爬虫功能上,可谓花样繁多.总结下来按照破解成功率排名,最高的是滑动解锁.其次是验证码数字.之后是一次点击对应的汉字,最后是想12306之前那种反人类的让你说那些是奶糖吧,哈哈 ...
- 大型情感剧集Selenium:2_options设置 #华为云·寻找黑马程序员#
上集回顾 昨天说简单介绍了什么是selenium,它能干what,和发展史与梗概.当的是python如何通过pip安装selenium,并下载对应浏览器的webdriver. 最后简单通过一个Demo ...
- 大型情感剧集Selenium:3_元素定位 #华为云·寻找黑马程序员#
关于昨天的文章 今天有朋友反馈,代码运行的时候,selenium提示警告 DeprecationWarning: use options instead of chrome_options drive ...
- 大型情感剧集Selenium:1_介绍 #华为云·寻找黑马程序员#
学习selenium能做什么? 很多书籍.文章中是这么定义selenium的: Selenium 是开源的自动化测试工具,它主要是用于Web 应用程序的自动化测试,不只局限于此,同时支持所有基于web ...
- Apache shiro集群实现 (八) web集群时session同步的3种方法
Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...
随机推荐
- shell 字符串比较与脚本 too many arguments 报错
一.问题 最近在写 shell 脚本的时候,遇到了一些小问题,就是我在判断一个字符串是否为空的时候经常报下面的错,程序是正常执行了,但是有这个提示很蛋疼,下面就是看看是什么问题导致的? [: too ...
- P3067 [USACO12OPEN]平衡的奶牛群(折半暴搜)
暴搜无疑.... 首先考虑纯暴搜...... 考虑每一个数: 选在左边集合 选在右边集合 不选 一共三种情况,用一个数组记录搜到的答案,所以暴搜是3^N的复杂度...直接死亡 于是讲折半暴搜.... ...
- 基于 ThinkPHP5 + Bootstrap 的后台开发框架 FastAdmin
FastAdmin是一款基于 ThinkPHP5 + Bootstrap 的极速后台开发框架. 主要特性 基于Auth验证的权限管理系统 支持无限级父子级权限继承,父级的管理员可任意增删改子级管理员及 ...
- 品优购(IDEA版)-第二天
品优购-第2天 学习目标 目标1:运用AngularJS前端框架的常用指令 目标2:完成品牌管理的列表功能 目标3:完成品牌管理的分页列表功能 目标4:完成品牌管理的增加功能 目标5:完成品牌管理的修 ...
- VS2019打包WPF安装程序最新教程
VS2019打包WPF安装程序最新教程,使用Visual Studio 2019开发的WPF程序如果想要打包为安装程序,除了在VS2019找到WPF项目类库直接右键发布之外,更常用的还是将其打包为ex ...
- 大宇java面试系列(三):Redis常见面试题
1. Redis 是什么?都有哪些使用场景? 我们先来理解经典的CAP理论: 一致性:是指从数据层面来看的一致性. 可用性:是指从系统层面的可用性. 容错性:是指从网络层面的的容错性. 数据库逐渐从关 ...
- python 做一个简单的登录接口
# -*- conding :utf-8 -*-# File Name: homewoe# Create Date: 2019/11/20 / 9:15# Change Activity: 2019/ ...
- C#:转义字符 \n 和 \r 的区别
1.\n,换行符,作用是换行符之后的字符换到下一行: 例如:1234/n567 得出的结果是1234 567 2.而\r,回车符,作用是回车符之后的字符会回到当前行的最前面,把回车符之前的字符覆 ...
- Java开发者入职必备条件
01.基础技术体系 我认为知识技能体系化是判断技术是否过关的第一步.知识体系化包含两层含义: 1. 能够知道技术知识图谱(高清版图谱扫文末二维码)的内容 比如分布式系统中常用的RPC技术,其背后就涉及 ...
- Github相关知识
github的提交流程 mkdir 目录名 :创建一个空文件夹 mkdir webs webs代表创建的新文件名称 cd 目录名 :切换到文件夹 cd webs 切换到当前新建的目录下 ...