UI自动化测试:页面截图的3种方法

发表于:2021-11-12 09:23

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:小小小小人ksh    来源:CSDN

  前言
  在进行无人值守的UI自动化测试,如果页面操作出现了问题,可以用截图的方式保留问题现场,同时佐证自己发现的问题。下面将介绍3种截图的方式:
  ·driver.get_screenshot_as_file()
  · driver.save_screenshot()
  · Pillow包
  前两种是selenium自带的api,最后一个需要单独安装第3方的包。
  测试代码
  1、get_screenshot_as_file():
  import time
  from datetime import datetime
  from selenium import webdriver
  import traceback
  def currentDate():
  '''生成当前日期字符串'''
  date = time.localtime()
  return '-'.join([str(date.tm_year), str(date.tm_mon),str(date.tm_mday)])
  def currentTime():
     '''生成当前时间字符串'''
  date = time.localtime()
  return '-'.join([str(date.tm_hour), str(date.tm_min),str(date.tm_sec)])
  def createDir():
      '''创建当前日期和当前时间目录'''
  path = os.path.dirname(os.path.abspath(__file__))
  dateDir = os.path.join(path,currentDate())
  #如果当前日期目录不存的话就创建
  if not os.path.exists(dateDir):
  os.mkdir(dateDir)
  timeDir= os.path.join(dateDir,currentTime())
  #如果当前时间目录不存的话就创建
  if not os.path.exists(timeDir):
  os.mkdir(timeDir)
  return timeDir
  def takeScreenshot(driver,savePath,pictureName):
  picturePath = os.path.join(savePath, pictureName+'.png')
  try:
  driver.get_screenshot_as_file(picturePath)
  except Exception as e:
  print(traceback.print_exc())
  # 获取浏览器驱动实例
  driver = webdriver.Chrome(executable_path='f:\\chromedriver')
  #访问搜狗首页
  driver.get('http://www.sogou.com')
  time.sleep(3)
  #搜狗首页截图
  takeScreenshot(driver,createDir(),'sogou')
  time.sleep(1)
  #退出浏览器
  driver.quit()
  执行完成后在当前目录下可以看到如下结果:
   
  2、save_screenshot():
  此方法和上一种是一样的,只需要对takeScreenshot函数作如下修改即可:
  def takeScreenshot(driver,savePath,pictureName):
     picturePath = os.path.join(savePath, pictureName+'.png')
     try:
         #和get_screenshot_as_file方法类似
         driver.save_screenshot(picturePath)
     except Exception as e:
         print(traceback.print_exc())
 
  执行完成后在当前目录下可以看到如下结果:
   
  3、Pillow包:
  需要先在命令行下安装pillow包,命令如下:pip install Pillow,如果电脑中有多个python版本。 
  #encoding=utf-8
  import os
  import time
  from datetime import datetime
  from selenium import webdriver
  import traceback
  from PIL import ImageGrab
  def currentDate():
      '''生成当前日期字符串'''
      date = time.localtime() 
      return '-'.join([str(date.tm_year), str(date.tm_mon),str(date.tm_mday)])
  def currentTime():
      '''生成当前时间字符串'''
      date = time.localtime() 
      return '-'.join([str(date.tm_hour), str(date.tm_min),str(date.tm_sec)])
  def createDir():
      '''创建当前日期和当前时间目录'''
      path = os.path.dirname(os.path.abspath(__file__))
      dateDir = os.path.join(path,currentDate())
      #如果当前日期目录不存的话就创建
      if not os.path.exists(dateDir):
         os.mkdir(dateDir)
      timeDir= os.path.join(dateDir,currentTime())
      #如果当前时间目录不存的话就创建
      if not os.path.exists(timeDir):
          os.mkdir(timeDir)
      return timeDir
  def takeScreenshot(driver,savePath,pictureName):
      picturePath = os.path.join(savePath, pictureName+'.png')
      try:
          im=ImageGrab.grab()
          im.save(picturePath,"jpeg")
      except Exception as e:
          print(traceback.print_exc())
  # 获取浏览器驱动实例
  driver = webdriver.Chrome(executable_path='f:\\chromedriver')
  #访问搜狗首页
  driver.get('http://www.sogou.com')
  time.sleep(3)
  #搜狗首页截图
  takeScreenshot(driver,createDir(),'sogou')
  time.sleep(1)
  #退出浏览器
  driver.quit()

  执行完成后在当前目录下可以看到如下结果:
  注意
  前两种方式截的是浏览器的相关页面,第3种是整个电脑桌面;
  创建时间或日期目录时%Y-%m-%d_%H:%M:%S这种是错误的格式,所有的包括 '' : / \ ? * < > |   这些特殊字符windows文件名无都无法使用,也无法保存,起名时需要注意.

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号