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 sleep

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = 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 sleep

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = 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 sleep

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = 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 sleep

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = 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 sleep

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = 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 sleep

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = 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”)))

总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值