selenium截图
文件结构

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截图的更多相关文章
- Java&Selenium截图方法封装
Java&Selenium截图方法封装 package util; import org.apache.commons.io.FileUtils; import org.openqa.sele ...
- selenium截图对比校验方法
/**对比图片进行校验是否成功**/package com.allin.pc;import java.awt.image.BufferedImage;import java.awt.image.Dat ...
- selenium 截图加上时间戳
思路: 1 新建screenshot文件夹,不存在则创建该目录 2 在screenshot文件夹下新建当日日期文件夹,比如20190110:不存在则创建该目录 3 截图保存到当日文件夹,且截图文 ...
- selenium 截图 添加时间戳
在自动化程序中运行的代码报错信息或者是相关日志有可能并无法直观的判断出错信息.因此截图是避免不了的.为了避免因为重复运行或者是图片名称相同导致截图被覆盖. 建议在截图时使用时间戳,保证截图图片名称的唯 ...
- selenium - 截图下载图片
from selenium import webdriver from selenium.webdriver import ChromeOptions from time import sleep f ...
- selenium截图功能
selenium自动化测试完后需要查看值观的结果,或者查操作过程中是否正确,此时需要使用自带的截图功能. 示例1: from time import sleep from selenium impor ...
- 关于selenium截图
没时间深入研究源代码,凭调试解决了非浏览器级别的滚动条截图. 首先,定位到带有滚动条的元素,通过xpath. 其次,获取scrollheight和clientheight. 第三,循环截图,循环截图的 ...
- c#使用selenium截图,操作dom元素
using System; //添加selenium的引用 using OpenQA.Selenium.PhantomJS; using OpenQA.Selenium.Chrome; using O ...
- selenium 截图
http://blog.csdn.net/u010953692/article/details/78320025 # coding:utf-8 # coding:cp936 from selenium ...
随机推荐
- 用 hugo 和 netlify 搭建blog【转】
用 hugo 和 netlify 搭建blog - kok的笔记本 Releases · gohugoio/hugo · GitHub 测试baidu 测试163
- Apache Flink教程
1.Apache Flink 教程 http://mp.weixin.qq.com/mp/homepage?__biz=MzIxMTE0ODU5NQ==&hid=5&sn=ff5718 ...
- 机器学习---最小二乘线性回归模型的5个基本假设(Machine Learning Least Squares Linear Regression Assumptions)
在之前的文章<机器学习---线性回归(Machine Learning Linear Regression)>中说到,使用最小二乘回归模型需要满足一些假设条件.但是这些假设条件却往往是人们 ...
- Codeforces 1092C Prefixes and Suffixes(思维)
题目链接:Prefixes and Suffixes 题意:给定未知字符串长度n,给出2n-2个字符串,其中n-1个为未知字符串的前缀(n-1个字符串长度从1到n-1),另外n-1个为未知字符串的后缀 ...
- 处理 Vue 单页面应用 SEO
由于在vue单页应用中title只设定在入口文件index.html,如果切换路由,title怎么更换? 在路由router中设置meta: { path:'/chooseBrand', compon ...
- Linux安装Oracle JDK替换OpenJDK详解
转自http://www.lsychina.com/howto_install_oracle-jdk_replace_openjdk_on_linux.html 众所周知,由于Oracle公司的JDK ...
- [面试]volatile类型修饰符/内存屏障/处理器缓存
volatile类型修饰符 本篇文章的目的是为了自己梳理面试知识点, 在这里做一下笔记. 绝大部分内容是基于这些文章的内容进行了copy+整理: 1. http://www.infoq.com/cn/ ...
- RSA加密传输代码示例
RSA加密传输代码示例 涉及敏感数据的传输,双方最好约定使用加密解密.那RSA非对称加密就大有作为了.服务端可以保留自己的私钥,发给客户端对应的公钥.这样就可以互相加解密了.php中rsa加解密实现: ...
- 半导体知识:蚀刻(Etch)工艺讲解
本文转载自微信公众号 - 半导体行业观察 , https://mp.weixin.qq.com/s/F3LXiub6n4iYsQDqDH9K_g
- 为什么单片机中既有Flash又有EEPROM
单片机运行时的数据都存在于RAM(随机存储器)中,在掉电后RAM 中的数据是无法保留的,那么怎样使数据在掉电后不丢失呢?这就需要使用EEPROM 或FLASHROM 等存储器来实现. 插播一段:ROM ...