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

相关文章

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja