当前位置: 首页 > news >正文

web自动化:6种窗口截图方法、文件打开形式、文件路径及时间戳命名

本文主要介绍6种窗口截图方式及源码分析,其中包括整屏截图和根据定位的元素截取相应的图片。此外,在窗口截图方法种还用到了文件路径、时间戳命名、文件打开方式等,在文中也将简单的做介绍。
在这里插入图片描述

一、窗口截图方法

常用的窗口截图方法是get_screenshot_as_file(filename)和save_screenshot(filename),这两种方法可以直接生成图片。
get_screenshot_as_png()和get_screenshot_as_base64()不能直接生成图片,需要进行进一步的操作。

1、get_screenshot_as_base64()

使用该方法截图后的图片是以base64加密过的,需要使用base64.b64decode(img)其进行解密。并且,解密后的是二进制的,还需要将其进一步操作。
使用该方法截取的是整屏的图片。
在这里插入图片描述

import base64
from time import sleepfrom selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
url = r"https://www.baidu.com"
driver.get(url)
driver.maximize_window()driver.find_element(By.ID, "kw").send_keys("搜索")img = driver.get_screenshot_as_base64()
img = base64.b64decode(img)
with open("./img.png", "wb") as f:f.write(img)sleep(2)
driver.quit()

2、screenshot_as_base64

该方法和get_screenshot_as_base64()类似,结果都是加密过的。但是此方法可以根据定位元素进行图片的截取。
注意:screenshot_as_base64没有括号。

import base64
from time import sleepfrom selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
url = r"https://www.baidu.com"
driver.get(url)
driver.maximize_window()element = driver.find_element(By.ID, "kw")
element.send_keys("搜索")img = element.screenshot_as_base64
img = base64.b64decode(img)
with open("./img.png", "wb") as f:f.write(img)sleep(2)
driver.quit()

3、get_screenshot_as_png()

与get_screenshot_as_base64()类型,结果是二进制的,不能直接生成图片,需要进一步操作。与get_screenshot_as_base64()不同的是,该方法的结果不是加密的。
get_screenshot_as_png()源码return的是b64decode(self.get_screenshot_as_base64().encode(“ascii”))。
使用该方法截取的是整屏的图片。
在这里插入图片描述

import base64
from time import sleepfrom selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
url = r"https://www.baidu.com"
driver.get(url)
driver.maximize_window()element = driver.find_element(By.ID, "kw")
element.send_keys("搜索")img = driver.get_screenshot_as_png()
with open("./img.png", "wb") as f:f.write(img)sleep(2)
driver.quit()

4、screenshot_as_png

该方法和get_screenshot_as_png()类似,结果是二进制的。但是此方法可以根据定位元素进行图片的截取。
注意:screenshot_as_png没有括号。

import base64
from time import sleepfrom selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
url = r"https://www.baidu.com"
driver.get(url)
driver.maximize_window()element = driver.find_element(By.ID, "kw")
element.send_keys("搜索")img = element.screenshot_as_png
with open("./img.png", "wb") as f:f.write(img)sleep(2)
driver.quit()

5、get_screenshot_as_file(filename)

使用该方法可以直接生成图片,不需要进行额外的处理。实际上,源码中get_screenshot_as_file(filename)方法是将get_screenshot_as_png()方法进行处理的。
使用该方法截取的是整屏的图片。
在这里插入图片描述

import base64
from time import sleepfrom selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
url = r"https://www.baidu.com"
driver.get(url)
driver.maximize_window()element = driver.find_element(By.ID, "kw")
element.send_keys("搜索")driver.get_screenshot_as_file("./img.png")sleep(2)
driver.quit()

6、save_screenshot(filename)

该方法的用法和get_screenshot_as_file(filename)一致,源码中save_screenshot(filename) return的是get_screenshot_as_file(filename)。
在这里插入图片描述

import base64
from time import sleepfrom selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
url = r"https://www.baidu.com"
driver.get(url)
driver.maximize_window()element = driver.find_element(By.ID, "kw")
element.send_keys("搜索")driver.save_screenshot("./img.png")sleep(2)
driver.quit()

二、文件打开形式

在使用get_screenshot_as_png()、screenshot_as_png、get_screenshot_as_base64()和screenshot_as_base64进行截图时,需要将二进制数据进行进一步的处理,with open(“./img.png”, “wb”) as f 中”wb“的意思是以二进制形式写入。
下面介绍几种常见的文件打开形式:

1、基础模式

  • r:只读,以文本模式打开文件,文件不存在时会报错
  • w:写入,以文本模式打开文件,覆盖写入(清空原内容),文件不存在时会新建
  • a:追加,以文本模式打开文件,在文件末尾追加内容(不覆盖原内容),文件不存在时会新建

2、二进制模式

  • rb:二进制只读
  • wb:二进制写入(覆盖)
  • ab:二进制追加

3、读写组合模式

  • r+:文本读写,文件不存在时会报错,不会清空原内容,但是写入时会覆盖当前位置的内容
  • w+:文本读写,文件不存在时会新建,会清空原有内容
  • rb+ / wb+ / ab+ :对应的二进制读写模式

4、其他模式

  • x:独立创建,仅在文件不存在时创建并写入,否则报错(避免覆盖已有文件)。支持python、php、ruby语言。

三、文件路径

保存截图时,需要指定文件名及路径,如with open(“./img.png”, “wb”) as f 的”./img.png“表示将截图在当前路径下保存为img.png。

  • 当前路径:./
  • 上一级路径:…/

四、时间戳命名

保存截图时,如果想以当前时间命名,则需要使用到时间戳命名。

1、导包

from time import strftime

2、使用

driver.get_screenshot_as_file(“./%s.png” % (strftime(“%Y_%m_%d %H_%M_%S”)))

总结

在这里插入图片描述

相关文章:

  • 面试题:Eureka和Nocas的区别
  • 【未解决】Spring AI 1.0.0-M6 使用 Tool Calling 报错,请求破解之法
  • 关于汽车辅助驾驶不同等级、技术对比、传感器差异及未来发展方向的详细分析
  • Java Spring Cloud框架使用及常见问题
  • 超融合监控 | SmartX监控解析
  • 中间件--ClickHouse-5--架构设计(分布式架构,列式压缩存储、并行计算)
  • FP3:机器人操作的3D基础策略
  • 常见的 API 设计风格
  • 列表、字符串、heapq堆对列算法
  • windows10 wsl2 安装ubuntu和docker
  • 中间件--ClickHouse-6--SQL基础(类似Mysql,存在差异)
  • 【Linux】系统入门
  • cursor AI编辑器的详细使用
  • 深度解析 Vue 项目 Webpack 分包与合包 一文读懂
  • Hadoop数据压缩教程
  • 深入理解栈数据结构:从基础概念到高级应用
  • Dify简介:从架构到部署与应用解析
  • go的json unmarshal和 k8s的deepcopy对比
  • 数据结构:最小生成树的普里姆算法和克鲁斯卡尔算法
  • 记录学习的第二十六天
  • 魔都眼|上海多家商场打开绿色通道,助力外贸出口商品转内销
  • 中国证监会:帮助受关税政策影响较大的上市公司纾困解难
  • 综合治理食品添加剂滥用问题,国务院食安办等六部门联合出手
  • 罗马尼亚临时总统博洛让任命普雷多尤为看守政府总理
  • 夹缝中的责编看行业:长视频之殇,漫长周期
  • 两个灵魂,一支画笔,意大利艺术伴侣的上海灵感之旅