selenium自动化截图的方式

get_screenshot_as_file 方法

语法:

get_screenshot_as_file(self, filename)
from selenium import webdriver


driver = webdriver.Chrome()
...
driver.get_screenshot_as_file('图片路径')

filename,保存截图的路径,路径应该为绝对路径,以‘/’隔开目录,如‘D:/文档’
参数 filename 应该以 .png

文档:

    def get_screenshot_as_file(self, filename):
        """
        Saves a screenshot of the current window to a PNG image file. Returns
           False if there is any IOError, else returns True. Use full paths in
           your filename.

        :Args:
         - filename: The full path you wish to save your screenshot to. This
           should end with a `.png` extension.

        :Usage:
            driver.get_screenshot_as_file('/Screenshots/foo.png')
        """
        if not filename.lower().endswith('.png'):
            warnings.warn("name used for saved screenshot does not match file "
                          "type. It should end with a `.png` extension", UserWarning)
        png = self.get_screenshot_as_png()
        try:
            with open(filename, 'wb') as f:
                f.write(png)
        except IOError:
            return False
        finally:
            del png
        return True

例1:


import os
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)
#退出浏览器

例2

from selenium import webdriver
import os
import time
from TestData.PutOutPath import PutoutPath


driver = webdriver.Edge()   # Edge浏览器
# driver = webdriver.Edge("驱动路径")
driver.get('https://www.baidu.com')


 # 截图
now = time.strftime("%Y%m%d%H%M%S", time.localtime(time.time()))

#path = PutoutPath.Photopath()
path='D:/文档/自建UI自动化需求说明书/自动化框架/PutOut'
print(path)
photoname  = os.path.join(path+'/ErrorPhoto/' + now + '.png')
print(photoname)
time.sleep(5)

driver.get_screenshot_as_file(photoname)
driver.close()

save_screenshot方法

和get_screenshot_as_file方法类似

语法:

save_screenshot(self, filename)
from selenium import webdriver


driver = webdriver.Chrome
driver.save_screenshot(’截图保存路径‘)
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())

Pillow包

图像库PIL(Python Image Library)是Python的第三方图像处理库

需要先在命令行下安装pillow包,命令如下:pip install Pillow

语法:

from PIL import ImageGrab

#截图
im=ImageGrab.grab()
#保存图片
#Image.save(fp, format=None, **params)
im.save(picturePath,"jpeg")
import os
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(savePath,pictureName):
      picturePath = os.path.join(savePath, pictureName+'.png')
      try:
            from PIL import ImageGrab
            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文件名无都无法使用,也无法保存,起名时需要注意,可以换成这种%Y-%m-%d_%H_%M_%S

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值