selenium之截图

截图

今天来学习一下selenium的截图,截图有什么作用呢;截图一般情况是遇到了错误,需要截图反馈到研发;或者是先截一张原始图,后续回归对比的时候,看看有没有哪个地方不一样,变化了的;

selenium目前支持了以下四种截图方式

  • save_screenshot(filename);获取当前屏幕截图并保存为指定文件
  • get_screenhot_as_base64();获取当前屏幕截图base64编码字符串
  • get_screenhot_as_file(filename);获取当前的屏幕截图,使用完整的路径
  • get_screenhot_as_png();获取当前屏幕截图的二进制文件数据

话不多说,让我们实践以下就知道怎么个用法了

save_screenshot(filename)

save_screenshot支持一个filename的传参,查看源码可以看得出来,截图后缀为png

filename支持携带路径,可以是相对路径,也可以是绝对路径;

需要注意的是,如果对应文件夹不存在,则无法保存;具体效果如下

保存成功则返回True、没成功则返回错误False

import time

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

serve_path = r'D:\Code_Study\driver\chromedriver-win64\chromedriver.exe'
service = Service(serve_path)
browser = webdriver.Chrome(service=service)



browser.get("https://www.baidu.com")
browser.find_element(By.ID, "kw").send_keys("selenium")
browser.find_element(By.ID, "su").click()
time.sleep(5)
# save_screenshot(filename);获取当前屏幕截图并保存为指定文件
# 在当前目录
browser.save_screenshot("selenium.png")
# 需要注意的是,如果对应文件夹不存在,则无法保存;
# 还支持携带路径参数,绝对路径
browser.save_screenshot(r"D:\Code_Study\Python_Selenium\pic\selenium.png")
# 相对路径
browser.save_screenshot(r"..\pic\selenium.png")
browser.quit()

get_screenhot_as_base64()

screenshot_base64 = browser.get_screenshot_as_base64()
print(screenshot_base64)

get_screenhot_as_file(filename)

保存成功则返回True、没成功则返回错误False

browser.get_screenshot_as_file("selenium.png")
# # 需要注意的是,如果对应文件夹不存在,则无法保存;
# # 还支持携带路径参数,绝对路径
browser.get_screenshot_as_file(r"D:\Code_Study\Python_Selenium\pic\selenium.png")
# # 相对路径
browser.get_screenshot_as_file(r"..\pic\selenium.png")

get_screenhot_as_png()

screenshot_data  = browser.get_screenshot_as_png()
print(screenshot_data)
# 可以使用二进制数据写入文件
with open("screenshot.png", "wb") as f:
    f.write(screenshot_data)

经过上面的实践,发现get_screenhot_as_filesave_screenshot这两个作用一样,后面相对于前面比较新,推荐使用后者

posted @ 2025-03-27 22:32  小鑫仔  阅读(119)  评论(0)    收藏  举报