文件结构

1.DateUtil.py

# cncoding = utf-8
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 currentTime():
timeStr = datetime.now()
# 构造当前时间字符串
now = timeStr.strftime('%H-%M-%S')
return now if __name__ == "__main__":
print(currentDate())
print(currentTime())

2.FileUtil.py

# cncoding = utf-8
from DateUtil import currentTime,currentDate
import os
'''
本文件主要用于创建目录,用于存放异常截图,
创建目录的方法提供大家参考
'''
def createDir():
# 获取当前文件所在目录的绝对路径
currentPath = os.path.dirname(os.path.abspath(__file__))
# 获取今天的日期字符串
today = currentDate()
# 构造以今天日期命名的目录的绝对路径
dateDir = os.path.join(currentPath,today)
if not os.path.exists(dateDir):
# 如果以今天日期命名的目录不存在则创建
os.mkdir(dateDir)
# 获取当前的时间字符串
now = currentTime()
# 构造以当前时间命名的目录的绝对路径
timeDir = os.path.join(dateDir,now)
print(timeDir)
if not os.path.exists(timeDir):
# 如果已当前时间命名的目录不存在则创建
os.mkdir(timeDir)
return timeDir
else:
os.path.join(currentPath, today)
now = currentTime()
# 构造以当前时间命名的目录的绝对路径
timeDir = os.path.join(dateDir, now)
# print(timeDir)
if not os.path.exists(timeDir):
# 如果已当前时间命名的目录不存在则创建
os.mkdir(timeDir)
return timeDir if __name__ == "__main__":
createDir()

3.SoGou.py

# cncoding = utf-8
from selenium import webdriver
import unittest,time,os
from FileUtil import createDir
import traceback '''
创建存在异常截图的目录,并得到本次实例中存放图片目录的绝对路径,
并且作为全局变量,以供本次所有测试用例调用
'''
picDir = createDir() def takeScreenshot(driver,savePaht,picName):
# 封装截图方法
# 构造屏幕截图路径及图片名
# 因为windows默认编码是GBK,而传入的图片名为utf8编码
# 所以这里需要进行转码,以便让图片名中的中文字符能正常显示
print(savePaht,str(picName))
picPath = os.path.join(savePaht, str(picName).encode('gbk').decode('utf-8').\
strip()+ ".png")
try:
# 调用webDriver提供的get_screenshot_sa_file()方法,
# 将截图的截图图片保存为本地文件
driver.get_screenshot_as_file(picPath)
except Exception as e:
print(traceback,e) class TestFailCaptureScreen(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome() def tearDown(self):
self.driver.quit()
def testSoGoouSearch(self):
url = "http://www.baidu.com"
self.driver.get(url)
try:
self.driver.find_element_by_id("kw").\
send_keys(u'光荣之路自动化测试')
self.driver.find_element_by_id('su').click()
time.sleep(3)
# 断言页面的代码中是否存在"实在认为"这4个关键字
# 因为页面中没有这四个字,所以会触发except语句的执行,并触发截图操作
self.assertTrue(u'事在人为' in self.driver.page_source,\
"事在在人为关键字在页面源码中未找到")
except AssertionError as e:
takeScreenshot(self.driver,picDir,e)
except Exception as e:
print(traceback.print_exc())
takeScreenshot(self.driver,picDir,e) if __name__ == "__main__":
unittest.main()

selenium截图的更多相关文章

  1. Java&Selenium截图方法封装

    Java&Selenium截图方法封装 package util; import org.apache.commons.io.FileUtils; import org.openqa.sele ...

  2. selenium截图对比校验方法

    /**对比图片进行校验是否成功**/package com.allin.pc;import java.awt.image.BufferedImage;import java.awt.image.Dat ...

  3. selenium 截图加上时间戳

    思路: 1  新建screenshot文件夹,不存在则创建该目录 2  在screenshot文件夹下新建当日日期文件夹,比如20190110:不存在则创建该目录 3  截图保存到当日文件夹,且截图文 ...

  4. selenium 截图 添加时间戳

    在自动化程序中运行的代码报错信息或者是相关日志有可能并无法直观的判断出错信息.因此截图是避免不了的.为了避免因为重复运行或者是图片名称相同导致截图被覆盖. 建议在截图时使用时间戳,保证截图图片名称的唯 ...

  5. selenium - 截图下载图片

    from selenium import webdriver from selenium.webdriver import ChromeOptions from time import sleep f ...

  6. selenium截图功能

    selenium自动化测试完后需要查看值观的结果,或者查操作过程中是否正确,此时需要使用自带的截图功能. 示例1: from time import sleep from selenium impor ...

  7. 关于selenium截图

    没时间深入研究源代码,凭调试解决了非浏览器级别的滚动条截图. 首先,定位到带有滚动条的元素,通过xpath. 其次,获取scrollheight和clientheight. 第三,循环截图,循环截图的 ...

  8. c#使用selenium截图,操作dom元素

    using System; //添加selenium的引用 using OpenQA.Selenium.PhantomJS; using OpenQA.Selenium.Chrome; using O ...

  9. selenium 截图

    http://blog.csdn.net/u010953692/article/details/78320025 # coding:utf-8 # coding:cp936 from selenium ...

随机推荐

  1. day02-运算符 and 和 or 的用法

    # 运算符的优先级 # () > not > and > or # and 必须两边表达式都为真,才为真 # or 如果表达式有一边为真,则为真 # not 表示非.比如 not 2 ...

  2. Manual write code to record error log in .net by Global.asax

    完整的Glabal.asax代码: <%@ Application Language="C#" %> <script RunAt="server&quo ...

  3. BZOJ 1855 股票交易 (算竞进阶习题)

    单调队列优化dp dp真的是难..不看题解完全不知道状态转移方程QAQ 推出方程后发现是关于j,k独立的多项式,所以可以单调队列优化.. #include <bits/stdc++.h> ...

  4. Spring框架的@Valid注解

    上一篇文章介绍了springmvc的get请求参数可以是一个自定的对象.那么如何限制这个对象里的参数是否必传呢? 方法一:在代码逻辑里取出对象里的这个值,手动进行判断 方法二:使用@Valid注解,在 ...

  5. openflow控制器和交换机之间的消息

    openflow控制器和交换机之间的消息 消息格式 openflow消息由64bit,8个字节组成 Openflow协议数据包由Openflow Header和Openflow Message两部分组 ...

  6. [leetcode] 5.Longest Palindromic Substring-2

    想了很多方法 搞轴对称,算对称轴,偶数都高出了一堆0.5在那加加减减,最后发现在移轴之前可能就返回了. class Solution: def longestPalindrome(self, s: s ...

  7. 关于DOM的事件操作

    一.JavaScript的组成 JavaScript基础分为三个部分: ECMAScript:JavaScript的语法标准.包括变量.表达式.运算符.函数.if语句.for语句等. DOM:文档对象 ...

  8. POJ 3666 Making the Grade (动态规划)

    Description A straight dirt road connects two fields on FJ's farm, but it changes elevation more tha ...

  9. mysql之binlog

    binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日 ...

  10. python基础1之 由来、种类、优缺点、安装环境

    python基础1之由来.种类.优缺点.安装环境 一.前世今生 Python的创始人是吉多·范罗苏姆(Guido van Rossum),在1989年开发.今年最新的编程语言排行榜中,python名列 ...