大型情感剧集Selenium:8_selenium网页截图的四种方法

简介: 本来不太想在更新selenium的相关知识了,因为...没人看!那今天就再更新一篇吧。关于selenium截图的骚操作...

今天讲什么


本来不太想在更新selenium的相关知识了,因为...没人看!那今天就再更新一篇吧。关于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了另外一个方法,接着走...


  1. 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,干嘛平白无故多一次回调函数...


所以,看源码的好处就是,不至于被某些帖子所误导...如下贴:

网络异常,图片无法展示
|

image.png


哥们也是好心整理,但以后还是看我的帖子吧,不迷路....我说了有四个,这才两个啊,还剩下俩呢?

  1. 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解码得到了二进制数据。接着走


  1. 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()

网络异常,图片无法展示
|

image.png

是不是so esay,还觉得编程难吗?难...因为这只是最基础的,明天和大家讲如何截取网页中的局部内容,以及selenium网页长图截取,不过,明天好像周五晚上例行休息啊,看明天阅读量了,多就不休了,哈哈...


The End

今天的selenium内容就更新到这里




相关文章
|
8月前
|
Web App开发 XML 前端开发
Selenium安装及八大元素定位方法&介绍及使用教程
Selenium是一个支持多种编程语言的自动化测试工具,用于Web应用的测试。它提供了多种元素定位策略,包括ID、Name、Class Name、Tag Name、Link Text、Partial Link Text、CSS Selector和XPath。安装Selenium需先确保Python和pip已安装,然后通过pip安装库,并下载对应浏览器的WebDriver。验证安装成功后,可通过编写简单脚本来打开网页并打印标题。注意WebDriver版本应与浏览器兼容,且可能需要额外的依赖包。文章还介绍了XPath的两种类型及其区别,推荐使用相对XPath以提高稳定性。
258 0
|
13天前
|
Web App开发 数据采集 JavaScript
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
本文介绍了Selenium、Chrome DevTools及Chrome DevTools Protocol (CDP) 的基本功能与应用。Selenium是一款开源自动化测试工具,适用于网页端应用程序测试和数据采集,具备跨平台特性。Chrome DevTools内置浏览器中,提供调试、分析Web应用程序的功能,包括元素、控制台、源代码和网络选项卡等。CDP是一套用于与Chromium内核浏览器通信的API,支持自动化测试和性能分析。文中还展示了Selenium与CDP结合使用的示例,如捕获网络请求数据和打印网页内容,并推荐了相关书籍和资源以供深入学习。
114 39
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
|
6月前
|
Web App开发 数据采集 移动开发
提升Selenium在Chrome上的HTML5视频捕获效果的五个方法
在Selenium中优化Chrome的HTML5视频捕获涉及更新Chrome和ChromeDriver、配置浏览器选项、使用代理IP、调整加载策略及确保安装了正确编解码器。例如,更新驱动程序,添加如`--autoplay-policy`和`--proxy-server`的命令行参数,使用代理以防止被封,设置页面加载策略为'eager',并安装必要的编解码器来确保视频播放。代码示例展示了如何集成这些优化措施。
210 2
提升Selenium在Chrome上的HTML5视频捕获效果的五个方法
|
7月前
|
数据采集 数据可视化 测试技术
C#生成Selenium测试报告:实用方法与技巧
在C#中使用Selenium进行自动化测试时,结合代理IP和ExtentReports能增强测试安全性和报告质量。安装必备工具如Selenium WebDriver、NUnit和ExtentReports。在测试设置中,配置代理(如亿牛云爬虫代理)以隐藏IP,通过ChromeOptions定制UserAgent,并添加Cookie。测试代码示例展示了如何打开网页、执行搜索并生成详细的测试报告。使用ExtentReports可创建可视化测试结果,便于团队分析。
C#生成Selenium测试报告:实用方法与技巧
|
3月前
|
JavaScript 前端开发 测试技术
精通Selenium:从基础到高级的网页自动化测试策略
【10月更文挑战第6天】随着Web应用变得越来越复杂,手动进行功能和兼容性测试变得既耗时又容易出错。自动化测试因此成为了现代软件开发不可或缺的一部分。Selenium是一个强大的工具集,它支持多种编程语言(包括Python),允许开发者编写脚本来模拟用户与Web页面的交互。本文将带领读者从Selenium的基础知识出发,逐步深入到高级的应用场景,通过丰富的代码示例来展示如何高效地进行网页自动化测试。
575 5
|
3月前
|
数据采集 前端开发 测试技术
Selenium中定位元素的9种方法
在Selenium中,定位页面元素是自动化测试和网页爬虫的基础。常用的9种元素定位方法包括:ID、Name、Class Name、Tag Name、CSS Selector、XPath、Link Text、Partial Link Text,以及XPath和CSS选择器的组合使用。每种方法各有优劣,建议根据页面的具体情况和元素的属性选择最合适的方法,并使用显式等待确保元素可用。
524 5
|
5月前
|
Web App开发 敏捷开发 测试技术
自动化测试之美:使用Selenium WebDriver进行网页功能验证
【8月更文挑战第29天】在数字时代,软件质量是企业竞争力的关键。本文将深入探讨如何通过Selenium WebDriver实现自动化测试,确保网页应用的可靠性和性能。我们将从基础设置到编写测试用例,逐步引导读者掌握这一强大的测试工具,同时分享实战经验,让测试不再是开发的负担,而是质量保证的利器。
|
7月前
|
数据采集 Web App开发 数据处理
一步步教你用Python Selenium抓取动态网页任意行数据
使用Python Selenium爬取动态网页,结合代理IP提升抓取效率。安装Selenium,配置代理(如亿牛云),设置User-Agent和Cookies以模拟用户行为。示例代码展示如何使用XPath提取表格数据,处理异常,并通过隐式等待确保页面加载完成。代理、模拟浏览器行为和正确配置增强爬虫性能和成功率。
806 3
一步步教你用Python Selenium抓取动态网页任意行数据
|
6月前
|
测试技术 API Android开发
《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)
【7月更文挑战第15天】这是关于自动化测试框架中Selenium API二次封装的教程总结。教程中介绍了如何设计一个支持不同浏览器测试的页面基类(BasePage),该基类包含了对Selenium方法的二次封装,如元素的输入、点击、清除等常用操作,以减少重复代码。此外,页面基类还提供了获取页面标题和URL的方法。
133 2
|
7月前
|
机器人 Java 测试技术
《手把手教你》系列技巧篇(六十)-java+ selenium自动化测试 - 截图三剑客 -中篇(详细教程)
【6月更文挑战第1天】本文介绍了使用Java和Selenium进行自动化测试时的另一种截图方法,即利用Robot类实现全屏截图。Robot类能够捕获屏幕上的所有内容,包括任务栏和浏览器元素。测试场景包括访问指定网站、调用截图方法和保存截图。示例代码展示了如何使用Robot创建全屏截图并保存到特定文件夹。在运行代码前,需确保指定的保存路径存在,否则会报错。
75 4

热门文章

最新文章