Selenium的错误截图
一、语法
driver.get_screenshot_as_file("截图存放位置+截图名称")
例:driver.get_screenshot_as_file(“F:\error.png”) 存放F盘下名称为eeror的png格式图片
#引入模块
from selenium import webdriver
#打开火狐浏览器百度搜索“selenium教程”
driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
driver.find_element_by_id('kw').send_keys('selenium教程')
driver.find_element_by_id('su').click()
#异常捕获屏幕截图
try:
driver.find_element_by_id('su1').click()
except :
driver.get_screenshot_as_file('F:\error.png')
print('获取元素失败,截图成功')
finally:
print('截图保存成功')
二、实例(创建时间文件夹存放截图)
-
创建命名为dateUtil的py格式文件
获取到当前系统时间#引入模块 import time from datetime import datetime def currentDate(): # 获取当前系统年月日期 date = time.localtime() today = str(date.tm_year) + "-" + str(date.tm_mon) + "-" + str(date.tm_mday) return today def currentHours(): #获取当前系统时分秒时间 timeStr = datetime.now() now = timeStr.strftime('%H-%M-%S') return now #打印时间验证是否正确获取到时间(可以删除) if __name__ == "__main__": print(currentDate()) print(currentHours())
-
创建命名为fileUtil的py格式的文件
用获取到的当前日期创建文件夹以便用来存放截图#引入模块 from dateUtil import currentDate,currentHours import os def createDir(): # 获得当前文件所在目录绝对路径 currentPath = os.path.dirname(os.path.abspath(__file__)) # 获取当前系统年月日期 today = currentDate() # 获取以当前系统时间命名目录的绝对路径(os.path.join路径拼接) dateDir = os.path.join(currentPath, today) print(dateDir) #判断当前日期的目录文件夹是否存在(os.path.exists(path)如果path存在,返回True;如果path不存在,返回False) if not os.path.exists(dateDir): # 如果当前日期命名的目录不存在则创建(os.mkdir() 方法用于以数字权限模式创建目录,path -- 要创建的目录mode -- 要为目录设置的权限数字模式) os.mkdir(dateDir) # 获取当前系统时分秒时间并赋值给now now = currentHours() # 获取以当前系统时分秒时间命名的目录的绝对路径 timeDir = os.path.join(dateDir, now) print(timeDir) # 判断当前时分秒的目录文件夹是否存在 if not os.path.exists(timeDir): # 如果当前时间命名的目录不存在则创建 os.mkdir(timeDir) return timeDir #执行createDir方法 if __name__ == '__main__': createDir()
3. 调用方法进行错误截图
#引入模块
from selenium import webdriver
import unittest, time, os, sys
import traceback
from dateUtil import currentHours
from fileUtil import createDir
#打开火狐浏览器百度搜索“selenium教程”
driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
driver.find_element_by_id('kw').send_keys('selenium教程')
driver.find_element_by_id('su').click()
#错误截图方法赋值
picDir = createDir()
#错误截图存放在创建的时间文件中
def screenCapture(driver, savePath, picName):
picPath = os.path.join(savePath, picName + ".png")
try:
driver.get_screenshot_as_file(picPath)
except Exception as e:
# 打印异常堆栈信息
print('异常信息:', traceback.print_exc())
#判断是否获取到元素,如未获取到元素进行错误截图
try:
driver.find_element_by_id('su1').click()
except :
#异常时屏幕捕捉截图
class screenCapture(unittest.TestCase):
screenCapture(driver, picDir, currentHours() + sys._getframe().f_code.co_name)
print('获取元素失败,截图成功')
finally:
print('截图保存成功')
#方法调用
if __name__ == '__main__':
unittest.main()