zoukankan      html  css  js  c++  java
  • selenium---屏幕截图

    前言

      通常在执行自动化用例的时候,是不会一直在旁边检测,报错的时候想要留下一些证据给开发,可以在代码中进行添加截图操作,通过截图把我们想要的内容截图下来。那selenium中如何操作呢?

    截图

    selenium截图方法有很多种,安静简单的列举几种:

    方法一:

    获取当前屏幕截图: get_screenshot_as_file(filename) ,filename为图片名称,需要填写完整路径。

    这里需要注意图片后缀只能是png,如果是jpg或者其他格式的话,会报错,但是程序还是回正常执行。

    报错内容:  UserWarning: name used for saved screenshot does not match file type. It should end with a `.png` extension "type. It should end with a `.png` extension", UserWarning) 

    from selenium import webdriver
    import time
    driver = webdriver.Chrome()
    driver.get('https://www.cnblogs.com/qican/')
    time.sleep(2)
    # 截图保存在本地
    driver.get_screenshot_as_file('123.png')

    方法二:

    获取当前屏幕截图,保存格式为base64:  get_screenshot_as_base64()  ,base64保存的图片多数用来放入html报告中。

    这里需要导入base64模块,使用base64模块展示图片

    from selenium import webdriver
    import time
    import base64
    driver = webdriver.Chrome()
    driver.get('https://www.cnblogs.com/qican/')
    time.sleep(2)
    # 通过base64进行保存图片
    x = driver.get_screenshot_as_base64()
    image = base64.b64decode(x)
    file = open('1.jpg',"wb")
    file.write(image)

    方法三:

    获取当前窗口屏幕截图的截图。  save_screenshot(filename)  ,filename:表示图片名称。

    from selenium import webdriver
    import time
    driver = webdriver.Chrome()
    driver.get('https://www.cnblogs.com/qican/')
    time.sleep(2)
    # 截图保存在本地
    driver.save_screenshot('123.png')

    方法四:

    以二进制的方式进行获取当前屏幕截图: get_screenshot_as_png()  

    这里在通过打开二进制图片的方法进行保存在本地

    from selenium import webdriver
    import time
    driver = webdriver.Chrome()
    driver.get('https://www.cnblogs.com/qican/')
    time.sleep(2)
    # 通过二进制的方法进行保存图片到本地
    x = driver.get_screenshot_as_png()
    file = open('12.png',"wb")
    file.write(x)

    这里安静就不把截图成功结果发出来了,大家可以手动试试

    异常捕捉

    通常错误截图大多数用在用例执行失败的时候,安静通过百度输入框填写错误的元素进行定位,然后通过异常捕捉进行截取图片内容。

    from selenium import webdriver
    import time
    driver = webdriver.Chrome()
    driver.get('https://www.baidu.com/')
    try:
        # 定位元素错误
        driver.find_element_by_id('anjing').send_keys('测试-安静')
    except Exception as msg:
        # 时间戳名称,防止覆盖
        name = time.strftime("%H.%M.%S")
        # 异常截图保存在本地
        driver.get_screenshot_as_file('%s.png'%name)

    这里我们可以查看发现图片已经截取下来了,安静这里没有打印错误信息。

    安静通过小小的例子介绍了web自动化中的截图功能,小伙伴们可以自己动手写一写。孰能生巧。

  • 相关阅读:
    [AWS DA
    [CSS] Grid: X: justify-content, Y: align-items, X & Y: place-content
    [AWS] Lab: Network Load Balancer
    [Netlify serverless] Dependencies are not automatically install in functions
    python pandas
    pytorch suds numpy pandas
    unistd.h sleep() stdlib.h exit()
    万字报告详解:数字人民币产业图景
    33个Kubernetes安全工具
    人工智能时代都需要哪些数学知识?这些经典教材给你划重点
  • 原文地址:https://www.cnblogs.com/qican/p/13680437.html
Copyright © 2011-2022 走看看