Selenium屏幕截图技巧:实现自动化截屏并按日期时间格式保存图片

本文主要是介绍Selenium屏幕截图技巧:实现自动化截屏并按日期时间格式保存图片,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在自动化测试过程中,我们经常需要对测试结果进行截图保存,以便于后续的分析和报告。Selenium WebDriver提供了丰富的屏幕截图功能,可以帮助我们轻松实现这一需求。本文将介绍如何使用Selenium WebDriver进行屏幕截图,并按照日期时间格式保存图片。

# 导入所需库
from selenium import webdriver# 创建一个webdriver实例
driver = webdriver.Chrome()# 打开一个网页
driver.get("https://www.example.com")# 保存屏幕截图为指定文件名
driver.save_screenshot("screenshot.png")# 获取屏幕截图的base64编码字符串
screenshot_base64 = driver.get_screenshot_as_base64()# 获取屏幕截图并保存为指定路径的文件
driver.get_screenshot_as_file("screenshot_path/screenshot.png")# 获取屏幕截图的二进制文件数据
screenshot_png = driver.get_screenshot_as_png()# 关闭webdriver实例
driver.quit()

操作思路

首先,我们需要导入相关的库和模块:

import os
from selenium import webdriver
from time import sleep, strftime, localtime, time
from selenium.webdriver import ActionChains, Keys
from selenium.webdriver.common.by import By

接下来,我们创建一个名为TestCase的类,用于封装测试用例。在__init__方法中,我们初始化Chrome浏览器驱动,并最大化浏览器窗口,然后打开百度首页。

class TestCase(object):def __init__(self):self.driver = webdriver.Chrome()self.driver.maximize_window()self.driver.get('https://www.baidu.com/')

test1方法中,我们在搜索框中输入关键词"selenium",点击搜索按钮,等待2秒后,使用save_screenshot方法将屏幕截图保存为baidu.png

def test1(self):self.driver.find_element(By.ID,'kw').send_keys('selenium')self.driver.find_element(By.ID,'su').click()sleep(2)self.driver.save_screenshot('baidu.png')

test2方法中,我们在搜索框中输入关键词"selenium",点击搜索按钮,等待2秒后,使用get_screenshot_as_pngget_screenshot_as_base64方法分别获取屏幕截图的二进制数据和base64编码。

def test2(self):self.driver.find_element(By.ID,'kw').send_keys('selenium')self.driver.find_element(By.ID,'su').click()sleep(2)pic = self.driver.get_screenshot_as_png()print('pic:',pic)pic1 = self.driver.get_screenshot_as_base64()print('pic:',pic)print('pic1:',pic1)

test3方法中,我们在搜索框中输入关键词"selenium",点击搜索按钮,等待2秒后,使用strftime函数生成截图文件名,然后使用save_screenshot方法将屏幕截图保存为该文件名的png文件。

def test3(self):self.driver.find_element(By.ID,'kw').send_keys('selenium')self.driver.find_element(By.ID,'su').click()sleep(2)st = strftime("%Y-%m-%d-%H-%M-%S",localtime(time()))fime_name = st+'.png'self.driver.save_screenshot(fime_name)

test4方法中,我们在搜索框中输入关键词"selenium",点击搜索按钮,等待2秒后,使用strftime函数生成截图文件名,然后将屏幕截图保存到与脚本所在目录同级的scrennshot文件夹中。如果该文件夹不存在,则创建该文件夹。

def test4(self):self.driver.find_element(By.ID, 'kw').send_keys('selenium')self.driver.find_element(By.ID, 'su').click()sleep(2)st = strftime("%Y-%m-%d-%H-%M-%S", localtime(time()))fime_name = st + '.png'current_file_path = os.path.abspath(__file__)current_dir = os.path.dirname(current_file_path)parent_dir = os.path.dirname(current_dir)screenshot_dir = os.path.join(parent_dir, 'scrennshot')if not os.path.exists(screenshot_dir):os.makedirs(screenshot_dir)file_path = os.path.join(screenshot_dir, fime_name)self.driver.get_screenshot_as_file(file_path)

最后,在主函数中,我们创建一个TestCase对象,并调用test4方法执行测试用例。

if __name__ == '__main__':case = TestCase()case.test4()

完整代码:

import os
from selenium import webdriver
from time import sleep, strftime, localtime, time
from selenium.webdriver import ActionChains, Keys
from selenium.webdriver.common.by import Byclass TestCase(object):def __init__(self):# 初始化Chrome浏览器驱动self.driver = webdriver.Chrome()# 最大化浏览器窗口self.driver.maximize_window()# 打开百度首页self.driver.get('https://www.baidu.com/')def test1(self):# 在搜索框中输入关键词 "selenium"self.driver.find_element(By.ID,'kw').send_keys('selenium')# 点击搜索按钮self.driver.find_element(By.ID,'su').click()# 等待2秒sleep(2)# 保存截图为baidu.pngself.driver.save_screenshot('baidu.png')def test2(self):# 在搜索框中输入关键词 "selenium"self.driver.find_element(By.ID,'kw').send_keys('selenium')# 点击搜索按钮self.driver.find_element(By.ID,'su').click()# 等待2秒sleep(2)# 获取截图的二进制数据pic = self.driver.get_screenshot_as_png()print('pic:',pic)# 获取截图的base64编码pic1 = self.driver.get_screenshot_as_base64()print('pic:',pic)print('pic1:',pic1)def test3(self):# 在搜索框中输入关键词 "selenium"self.driver.find_element(By.ID,'kw').send_keys('selenium')# 点击搜索按钮self.driver.find_element(By.ID,'su').click()# 等待2秒sleep(2)# 生成截图文件名st = strftime("%Y-%m-%d-%H-%M-%S",localtime(time()))fime_name = st+'.png'# 保存截图self.driver.save_screenshot(fime_name)def test4(self):# 在搜索框中输入关键词 "selenium"self.driver.find_element(By.ID, 'kw').send_keys('selenium')# 点击搜索按钮self.driver.find_element(By.ID, 'su').click()# 等待2秒sleep(2)# 生成截图文件名st = strftime("%Y-%m-%d-%H-%M-%S", localtime(time()))fime_name = st + '.png'# 获取当前文件路径current_file_path = os.path.abspath(__file__)# 获取当前文件所在目录current_dir = os.path.dirname(current_file_path)# 获取当前文件所在目录的上一级目录parent_dir = os.path.dirname(current_dir)# 拼接截图保存目录screenshot_dir = os.path.join(parent_dir, 'scrennshot')# 如果截图保存目录不存在,则创建该目录if not os.path.exists(screenshot_dir):os.makedirs(screenshot_dir)# 拼接截图文件完整路径file_path = os.path.join(screenshot_dir, fime_name)# 保存截图到指定路径self.driver.get_screenshot_as_file(file_path)if __name__ == '__main__':case = TestCase()# case.test1()# case.test2()# case.test3()case.test4()

通过以上代码,我们可以实现Selenium屏幕截图功能,并按照日期时间格式保存图片。这样,我们就可以在自动化测试过程中轻松地对测试结果进行截图保存,以便后续的分析和报告。

这篇关于Selenium屏幕截图技巧:实现自动化截屏并按日期时间格式保存图片的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1077499

相关文章

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("