首页 > 编程语言 > 详细

Selenium3+python3自动化(三十八)--异常后截图(screnshot)

时间:2020-09-04 08:31:36      阅读:83      评论:0      收藏:0      [点我收藏+]

前言

在执行用例过程中由于是无人值守的,用例运行报错的时候,我们希望对当前屏幕截图,留下证据。

一、截图方法

1.get_screenshot_as_file(self,filename)

--这个方法是获取当前window的截图,出现IOError时候返回False,截图成功返回True.

filename参数是保存文件的路径。

如,driver.get_screenshot_as_file("D:\\a.png")

 driver.get_screenshot_as_file("D:/b.png")

 driver.get_scrrenshot_as_file("c.png")  #当前脚本所在目录下

 

2.get_screenshot_as_base64(self)

--这个方法也是获取屏幕截图,保存的是base64的编码格式,在HTML界面输出截图的时候,会用到。

比如,想把截图放到html测试报告里。
Usage:
driver.get_screenshot_as_base64()

 

3.get_screenshot_as_png(self)
--这个是获取屏幕截图,保存的是二进制数据,很少用到.
Usage:
driver.get_screenshot_as_png()

二、异常后截图

1.为了能抛出异常,把定位“百度一下”按钮的id换个错的id。

2.给图片命名时候加上时间,避免同一文件名称被覆盖掉。

3.文件路径,相对路径或绝对路径。执行代码后,在相应位置查看图片

4.结果的结果,如果没截到图返回False,截图成功会返回True。

参考代码:

# coding:utf-8
from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get("https://www.baidu.com")
try:
    driver.find_element_by_id("kw").send_keys("xixi")
    driver.find_element("id","suxx").click()
except Exception as msg:
    print("报错信息:{}".format(msg))
    ctime=time.strftime("%Y%m%d_%H%M%S",time.localtime())
    pic=driver.get_screenshot_as_file("{}.png".format(ctime))
    pic1=driver.get_screenshot_as_file("{}.png".format("d:\\a"))
    pic2=driver.get_screenshot_as_file("{}.png".format("D:/b")) #盘符(d,D)大小写都可以
    print("截图结果:{},{},{}".format(pic,pic1,pic2))

 运行结果:

报错信息:Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="suxx"]"}
  (Session info: chrome=84.0.4147.89)

截图结果:True,True,True

三、get_screenshot_as_file源码如下

    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

  

Selenium3+python3自动化(三十八)--异常后截图(screnshot)

原文:https://www.cnblogs.com/canglongdao/p/13608438.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!