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

相关文章

Pandas利用主表更新子表指定列小技巧

《Pandas利用主表更新子表指定列小技巧》本文主要介绍了Pandas利用主表更新子表指定列小技巧,通过创建主表和子表的DataFrame对象,并使用映射字典进行数据关联和更新,实现了从主表到子表的同... 目录一、前言二、基本案例1. 创建主表数据2. 创建映射字典3. 创建子表数据4. 更新子表的 zb

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义