Python Selenium自动化测试截图与保存完整指南
本文详解Python Selenium自动化测试中的截图功能,重点介绍save_screenshot方法的使用。通过完整代码示例展示如何按日期和时间自动命名保存截图,解决长页面截图难题,并演示结合断言判断测试结果的实用技巧,帮助测试人员高效定位错误并记录测试步骤。
本文主要讲解如何利用Selenium库进行网页截图,并在测试过程中保存截取的图片。在自动化测试环节,截图是一项关键操作,尤其在测试出错时,截图能提供直观的错误现场证据。在Python版本的Selenium中,虽然存在多种截图方式,但本文重点介绍其中最常用的一种实现方法。
掌握截图技能对于测试人员而言至关重要。
在自动化测试流程中,截图功能有助于直观地定位程序错误,并完整记录测试执行的每一个步骤。
回忆此前参与某跨国银行的自动化测试项目时,该银行的项目经理明确要求:自动化测试的每一步操作至少需要生成一张截图。这一要求旨在证明每个功能点均已被自动化测试覆盖,此时,截图便成为了验证自动化测试有效性的核心依据。
优秀的测试人员往往能生成高质量的截图,这如同资深爱好者擅长创作诗歌一样,是一种需要磨练的专业技能。
Selenium WebDriver提供的截图功能非常强大。过去,截图最大的痛点在于页面过长时只能截取当前可视屏幕,滚动条下方的内容通常无法捕获。如今,WebDriver已解决这一难题,无论页面长度如何,它都能近乎完美地截取整个页面的完整图像。
以下代码演示了如何使用WebDriver执行截图操作:
# -*- coding: utf-8 -*-
from selenium import webdriver
import unittest
import os,sys,time
import HTMLTestReport
#登录
driver =webdriver.Firefox()
current_time = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))
current_time1 = time.strftime("%Y-%m-%d", time.localtime(time.time()))
print(current_time )
print(current_time1 )
# 必须打印图片路径HTMLTestRunner才能捕获并且生成路径,\image\**\\**.png 是获取路径的条件,必须这样的目录
#设置存储图片路径,测试结果图片可以按照每天进行区分
#通过if进行断言判断
driver.get("https://baidu.com/")
#新创建路径“.”表示当前整个.py文件的路径所在的位置,“\\”路径分割符,其中的一个是“\”表示转义字符
pic_path = '.\\result\\image\\' + current_time1+'\\' + current_time +'.png'
print(pic_path)
time.sleep(5)
print(driver.title)
#截取当前url页面的图片,并将截取的图片保存在指定的路径下面(pic_path),注:以下两种方法都可以
driver.save_screenshot(pic_path)
driver.save_screenshot('.\\result\\image\\' + current_time1+'\\' + current_time +'.png')
if u'百度一下,你就知道' == driver.title:
print ('Assertion test pass.')
else:
print ('Assertion test fail.')
#通过try抛出异常进行断言判断
driver.get("https://baidu.com/")
driver.save_screenshot(pic_path)
try:
assert u'百度一下,你就知道' == driver.title
print ('Assertion test pass.')
except Exception as e:
print ('Assertion test fail.', format(e))
time.sleep(5)
driver.quit()
save_screenshot方法实现了核心的截图功能,用户只需传入希望保存截图的文件路径及文件名即可,操作十分便捷。
总结
上述内容介绍了基于Python和Selenium实现截图及保存截取图片的具体方法,希望能对读者有所帮助。如有任何疑问,欢迎留言,小编会及时回复。同时,衷心感谢大家对本站的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













