1.get_screenshot_as_file()

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.get_screenshot_as_file("./img/save.png")
driver.quit()

get_screenshot_as_file方法只能截取当前页面全屏,

2.save_screenshot()

save_screenshot()其实和save_screenshot_as_file()用法相同,两者没什么区别,我们可以看下save_screenshot()的封装

使用时最后返回的还是save_screenshot_as_file()方法

3.get_screenshot_as_png()

get_screenshot_as_png()方法截取后直接是二进制,并不能像前两个方法一样直接生成图片,我们再写入本地即可。

from selenium import webdriver
from selenium.webdriver.common.by import By driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.implicitly_wait(10)
img_save = driver.find_element(by=By.XPATH, value="//img[@id='s_lg_img']")
a = driver.get_screenshot_as_png() # 截取后直接是二进制
with open("./img/two01.jpg", mode="wb")as f:
f.write(a)
driver.quit()

以上用法是截取页面全屏,还可根据定位的元素截取相应的图片

img_save = driver.find_element(by=By.XPATH, value="//img[@id='s_lg_img']")
a = img_save.screenshot_as_png # 截取后直接是二进制,无括号
with open("./img/two01.jpg", mode="wb")as f:
f.write(a)
driver.quit()

  

4.get_screenshot_as_base64()

get_screenshot_as_base64()截取后的图片是以base64加密过的,需要解密后再写入本地。

import base64

from selenium import webdriver
from selenium.webdriver.common.by import By driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.implicitly_wait(10)
img_save = driver.find_element(by=By.XPATH, value="//img[@id='s_lg_img']")
a = driver.get_screenshot_as_base64() # base64加密 b = base64.b64decode(a) # 解密
with open("./img/two.jpg", mode="wb")as f:
f.write(b)
driver.quit()

与get_screenshot_as_png()相似的是可根据定位的元素截取相应的图片

img_save = driver.find_element(by=By.XPATH, value="//img[@id='s_lg_img']")
a = img_save.screenshot_as_base64 # base64加密,无括号
b = base64.b64decode(a) # 解密
with open("./img/two.jpg", mode="wb")as f:
f.write(b)

  

文章来源:https://www.cnblogs.com/lihongtaoya/ ,请勿转载

selenium四种截图方式的更多相关文章

  1. Selenium&Appium四种等待方式

    一.摘要 本博文主要介绍自动化测试中,无论是selenium或是Appium的四种等待方式,合理的使用等待对代码的稳定性,测试效率都有很大的提高 隐式等待:是在尝试发现某个元素的时候,如果没能立刻发现 ...

  2. Android开发之基本控件和详解四种布局方式

    Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方 ...

  3. python selenium 三种等待方式详解[转]

    python selenium 三种等待方式详解   引言: 当你觉得你的定位没有问题,但是却直接报了元素不可见,那你就可以考虑是不是因为程序运行太快或者页面加载太慢造成了元素不可见,那就必须要加等待 ...

  4. JMeter四种参数化方式

    JMeter参数化是指把固定的数据动态化,这样更贴合实际的模拟用户请求,比如模拟多个不同账号.JMeter一共有四种参数化方式,分别是: CSV Data Set Config Function He ...

  5. lua中for循环的四种遍历方式

    lua中for的四种遍历方式区别 table.maxn 取最大的整数key #table 从1开始的顺序整数最大值,如1,2,3,6 #table == 3   key,value pairs 取每一 ...

  6. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (一) —— 总览

    Android数据的四种存储方式SharedPreferences.SQLite.Content Provider和File (一) —— 总览   作为一个完成的应用程序,数据存储操作是必不可少的. ...

  7. HttpwebClient的四种请求方式

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷.      本文旨在发布代码,供自己参考,也供大家参考,谢谢. 正题: Ht ...

  8. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharePreferences

    除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data ...

  9. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (四) —— ContentProvider

    ContentProvider是安卓平台中,在不同应用程序之间实现数据共享的一种机制.一个应用程序如果需要让别的程序可以操作自己的数据,即可采用这种机制.并且此种方式忽略了底层的数据存储实现,Cont ...

  10. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite

    SQLite是一种转为嵌入式设备设计的轻型数据库,其只有五种数据类型,分别是: NULL: 空值 INTEGER: 整数 REAL: 浮点数 TEXT: 字符串 BLOB: 大数据 在SQLite中, ...

随机推荐

  1. 开发老人笔记:Git 常用命令清单

    摘要:git是目前世界上最先进的分布式版本控制系统. 多人协作 master:此分支用来发布稳定的代码,合并一般是由管理员合并 dev:此分支用于团队开发,团队成员向此分支提交代码 bug:此分支用于 ...

  2. 华为云FusionInsight助力宇宙行打造金融数据湖新标杆

    摘要:工行采用了华为云FusionInsight MRS大数据存算分离方案,实现了大数据平台与OBS对象存储服务的对接,将原有的HDFS数据无缝迁移到OBS上.在保证性能的前提下,实现了计算与存储独立 ...

  3. 系统学Prompt,强烈推荐这3个教程,OpenAI还是最强

    系统学Prompt,强烈推荐这3个教程 OpenAI官方Prompt教程 这是最权威.最详细.最值得深入学习的提示词工程学习教程! 教程地址:https://platform.openai.com/d ...

  4. 一个神奇的Python库:Evidently,机器学习必备

    Evidently 是一个面向数据科学家和机器学习工程师的开源 Python 库.它有助于评估.测试和监控从验证到生产的数据和 ML 模型.它适用于表格.文本数据和嵌入. 简介 Evidently 是 ...

  5. L2-007 家庭房产 (25 分) (并查集)

    给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(≤1000),随后N行,每行按下列格式给出一个人的房产: 编号 父 ...

  6. 杭州站|阿里云 Serverless 技术实践营(Serverless + 大数据)开启报名!

    活动简介 "Serverless 技术实战与创新沙龙 " 是一场以 Serverless 为主题的开发者活动,通过一个下午的时间增进对 Serverless 技术的理解,快速上手, ...

  7. vue用qrcodejs2生成二维码,解决多个二维码追加的问题

    vue使用qrcodejs2生成二维码 1.安装qrcodejs2 npm install qrcodejs2 2.代码 //导入组件 import QRCode from 'qrcodejs2' / ...

  8. <vue 路由 7、导航守卫>

    导航守卫 一.     知识点 1.什么是导航守卫? (1)vue-router提供的导航守卫主要用来监听路由的进入和离开. (2)vue-router提供了beforeEach和afterEach的 ...

  9. Qt大型工程开发技术选型PartFinal:CLR调用COM组件

    Qt大型工程开发技术选型PartFinal:CLR调用COM组件 这里其实没什么内容了,直接上代码吧,如下文所示: #pragma once #using <mscorlib.dll> u ...

  10. 使用 Docker Compose V2 快速搭建日志分析平台 ELK (Elasticsearch、Logstash 和 Kibana)

    前言 ELK 是指 Elasticsearch.Logstash 和 Kibana 这三个开源软件的组合. Elasticsearch 是一个分布式的搜索和分析引擎,用于日志的存储,搜索,分析,查询. ...