robotframework  这个需要了解的请度娘。本文实现的是一个小功能。大体分为如下几个步骤

1)给定一个pdf文件。

2)读取pdf文件内容,并解析为文本内容。

3)通过给定的内容,比对pdf文件内容。

4)输出测试结果。

5)发送结果到指定邮件。

其中读取pdf文件内容,使用的是pdfminer

其他的就是自己包装。

涉及到部分隐私内容,部分代码如下:

# -*- coding: UTF-8 -*-
# coding=utf-8
#from __future__ import unicode_literals
import sys
import osimport subprocess
import time
import re
from robot.libraries.BuiltIn import BuiltIn
from mailcommon import mailcommon
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfdevice import PDFDevice, TagExtractor
from pdfminer.pdfpage import PDFPage
from pdfminer.converter import XMLConverter, HTMLConverter, TextConverter
from pdfminer.cmapdb import CMapDB
from pdfminer.layout import LAParams
from pdfminer.image import ImageWriter
import cStringIO
#reload(sys)
#sys.setdefaultencoding('utf-8')class pdfContentKeywords(object):ROBOT_LIBRARY_SCOPE = 'Global'root = os.path.abspath(os.path.join(__file__, '..'))def __init__(self):self.builtin = BuiltIn()def handlepdf(self, path, param_dict,email, fail=True):''' Reads a specified directory pdf file and diff ...`path`: pdf file path`param_dict`: Require comparison data`fail`:  If there are differences it will throw an exception and test will faildefaults to True, if False test's will continue '''param_dict=eval(param_dict)self.builtin.log("pdf: %s" %path)self.builtin.log("param: %s" %param_dict)fail = self.builtin.convert_to_boolean(fail)result=dictif fail:result=self._diffContent(path, param_dict)else:try:result=self._diffContent(path, param_dict)except Exception, e:self.builtin.log(e)msg=''for i in result:print u"result:%s=" % i,result[i]#print self.builtin.log(i) msg+="=>".join([i,str("检验通过" if result[i]==1 else "检验没通过")])mail_obj=mailcommon()print u"mail MSG:%s" % msgmaillist=[]maillist.append(email)mail_obj.send_mail(maillist,'测试结果分析',msg);self.builtin.log("End")def _readPdf(self,path):caching = Falsepassword = ''pagenos = set()maxpages = 0# output optionoutfile = Noneouttype = Noneimagewriter = Nonerotation = 0layoutmode = 'normal'codec = 'utf-8'pageno = 1scale = 1showpageno = Truelaparams = LAParams()content=''outfp=cStringIO.StringIO()try:rsrcmgr = PDFResourceManager(caching=caching)device = TextConverter(rsrcmgr, outfp, codec=codec, laparams=laparams,imagewriter=imagewriter)fp = file(path, 'rb')interpreter = PDFPageInterpreter(rsrcmgr, device)for page in PDFPage.get_pages(fp, pagenos,maxpages=maxpages, password=password,caching=caching, check_extractable=True):page.rotate = (page.rotate+rotation) % 360interpreter.process_page(page)fp.close()  device.close()content= outfp.getvalue()outfp.close()except Exception, e:print "Exception:%s",eself.builtin.log(e)content=content.replace('\n','').replace('\t','').strip('\n')print u"pdf file content:%s"% content#.encode('utf-8').strip()return contentdef _diffContent(self,path,p_dict):result=dict()try:pdfContent=self._readPdf(path)fail=0for i in p_dict: print "dict[%s]=" % i,p_dict[i] if re.search(r''+i+p_dict[i] ,pdfContent,re.I | re.M|re.X):fail=1   result[i+p_dict[i]]=failexcept Exception, e:print "Exception:%s",eself.builtin.log(e)return resultif __name__ == "__main__":d = pdfContentKeywords()print d.handlepdf("C:\\Print.pdf",{"船名/航次:":"CMACGMFIDELIO/B14WESVLC/VALENCIA"},'roger_he@5uzh.com',False)#d._readPdf("")

  

转载于:https://www.cnblogs.com/fer-team/p/4653669.html

robotframework 测试工具添加PDF文件内容匹配插件相关推荐

  1. 修改pdf文件内容可以使用什么编辑工具

    现在很多文件都是PDF的格式,使用起来确实是很方便,但是想要编辑修改那确实就比较困难了,为了能够编辑.修改PDF文件,大家必须要借助软件的帮助才可以,那么修改pdf文件内容用什么编辑工具?这就让小编来 ...

  2. 电脑上怎么做pdf文件_怎么编辑pdf文件内容?什么工具可以编辑pdf?

    怎么编辑pdf文件内容?临近毕业时候,我有了报考教师资格证的想法,打算之后当老师.期间,我在网上找了很多报考教资的参考资料,不过它们大多是以pdf格式文件形式存在.有时候要往里加入.修改些内容,但我不 ...

  3. java pdf添加透明水印_如何使用PDF编辑工具在PDF文件中添加透明水印

    PDF 文件在修改编辑的时候会使用到 PDF 编辑工具,不管是工 作中还是生活中,都会使用到 PDF 文件,当我们需要给 PDF 文件添 加透明水印时,该怎么操作呢,是不是有很多的小伙伴也很好奇, 那 ...

  4. python 读取文件读出来是什么格式-深入学习python解析并读取PDF文件内容的方法...

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  5. python中读取文件内容-深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  6. 教你如何编辑修改PDF文件内容

    PDF这种便携式的文档,因其独有的特性在现在的办公中应用越来越广,虽然这种文档经常遇见但是还有很多人对PDF内容的修改不是很清楚,下面就讲下怎么编辑修改pdf的文字. ​ 查看PDF文件通过阅读器就可 ...

  7. 如何修改pdf文件内容并保存

    大家都知道PDF格式阅读容易想要再次编辑就比较麻烦了.现在的PDF文件大部分是通过其它文档转换而来 的.其实还个简便的方法,就是利用PDF编辑器进行编辑.修改.那么,如何修改pdf文件内容并保存?还是 ...

  8. 如何修改PDF文件内容,PDF怎么编辑页眉页脚

    在大家的工作中越来越多的回使用到PDF文件.对于PDF文件,想要在文件中添加页眉页脚或者是编辑文件中就有的页眉页脚怎么去修改,是大家常常苦恼的事情,众所周知PDF文件的编辑是需要PDF编辑器的,那么P ...

  9. PDF文件可以修改吗,怎么修改PDF文件内容

    越来越多的小伙伴会私信小编询问小编关于PDF文件的修改技巧,在使用PDF文件的时候,往往是需要用到PDF编辑器的,在使用PDF编辑器的时候,怎么去编辑文件中的内容呢,或许很多刚刚接触PDF文件的小伙伴 ...

最新文章

  1. TensorRT优化方案图例
  2. webService学习记录
  3. CF626F. Bear and Fair Set
  4. 科学家用计算机模拟后确认 60个n原子,科学家用计算机模拟后确认,60个N原子可结合成N60分子。下列关于N60的叙述中正确的是A.N60是一种新型的化合物...
  5. java编程50_java经典50编程题(1-10)
  6. 关于CAS服务器磁盘占用的问题,锁定目录惹的祸
  7. Python-OpenCV基本操作
  8. 【Java NIO的深入研究1】缓冲区
  9. mysql 索引优化分析
  10. Java程序设计基础------Java基础
  11. Python爬取2万条微博热搜,带你揭开热搜趋势!
  12. 【STM32f401学习之路-00】搭建工程环境
  13. 未来10年35项最值得你期待的技术(中)
  14. 算法:经典leetcode算法题解
  15. linux 函数中打印调用栈
  16. 乘S10热销的东风,三星四机齐出再攻中国手机市场
  17. 遥感影像目标检测:从CNN(Faster-RCNN)到Transformer(DETR)
  18. 数组系列—连续数中寻找缺失的数字
  19. CSS3 文本多列 分栏
  20. mysql 清除分区数据恢复_MySQL 误操作后数据恢复(update,delete忘加where条件)【转】...

热门文章

  1. C#取真实IP地址及分析
  2. 荐礼啦php知道与问问的采集插件
  3. 多个ORACLE HOME时的程序连接
  4. sql中全文检索的具体细节
  5. Python---列表与元组
  6. 感觉小轿车要比SUV舒服,为什么很多人还是选择了SUV?
  7. 投资五大基本法则,助你在理财投资路上走得更平稳顺利
  8. 底薪80万挖来一个大公司高管
  9. 为什么macOS比Windows快那么多,是硬件的缘故么?
  10. spring cloud中gateway存在的意义是什么?