zoukankan      html  css  js  c++  java
  • selenium 截图

    这篇文章介绍如何利用Selenium的方法进行截图,在测试过程中,是有必要截图,特别是遇到错误的时候进行截图。在selenium for Python中主要有三个截图方法,我们挑选其中最常用的一种。

    截图技能对于测试人员来说应该是较为重要的一个技能。

    在自动化测试中,截图可以帮助我们直观的定位错误、记录测试步骤。

    记得以前在给某跨国银行做自动化项目的时候,某银的PM要求我们自动化测试的每一步至少需要1个截图,以证明每个功能都被自动化测试给覆盖过,在这种情况下截图就成了证明自动化测试有效性的重要手段。

    好的测试人员都会截得一手好图,就跟骨灰级宅男定会吟得一手好诗一般。

    webdriver的截图功能十分强悍。以前在截图的时候,最麻烦的问题莫过于页面太长而只能截到一屏,屏幕以外需要移动滚动条才能看到的区域一般是截不到的。现在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()

    指定元素截图

    # coding:utf-8
    # coding:cp936
    from selenium import webdriver
    from PIL import Image
    
    broswer = webdriver.Chrome()
    broswer.get("http://www.baidu.com")
    broswer.save_screenshot(r'E:photo.png')
    baidu = broswer.find_element_by_id('su')
    left = baidu.location['x']
    top = baidu.location['y']
    elementWidth = baidu.location['x'] + baidu.size['width']
    elementHeight = baidu.location['y'] + baidu.size['height']
    picture = Image.open(r'E:photo.png')
    picture = picture.crop((left, top, elementWidth, elementHeight))
    picture.save(r'E:photo2.png')
  • 相关阅读:
    WM_PAINT消息详解,使用InvalidateRect或InvalidateRgn函数刻意产生WM_PAINT消息(WIN7里有变化,“调整视觉效果”,将“启用桌面组合”去掉)
    delphi 大文件的读写 使用 MapviewOffile
    Delphi的子类化控件消息, 消息子类化
    wParam与lParam的区别
    为什么使用DLL
    大数据分包算法
    JSON如何序列图片
    AngularJs学习
    设计模式解读
    js模块化编程总结
  • 原文地址:https://www.cnblogs.com/liuyun66535309/p/9240173.html
Copyright © 2011-2022 走看看