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')
相關文章
相關標籤/搜索