selenium 截图

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

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

在自动化测试中,截图能够帮助咱们直观的定位错误、记录测试步骤。ui

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

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

webdriver的截图功能十分强悍。之前在截图的时候,最麻烦的问题莫过于页面太长而只能截到一屏,屏幕之外须要移动滚动条才能看到的区域通常是截不到的。如今webdriver解决了这个问题,不管页面有多长,webdriver都能比较完美的截到完整的页面。code

下面的代码演示了如何使用webdriver进行截图:orm

# -*- 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()

指定元素截图blog

# 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')
相关文章
相关标签/搜索