robotframework 测试工具添加PDF文件内容匹配插件

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 os

import 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 fail
                 defaults 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=dict
        if 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" % msg
        maillist=[]
        maillist.append(email)
        mail_obj.send_mail(maillist,‘测试结果分析‘,msg);
        self.builtin.log("End")

    def _readPdf(self,path):
        caching = False
        password = ‘‘
        pagenos = set()
        maxpages = 0
        # output option
        outfile = None
        outtype = None
        imagewriter = None
        rotation = 0
        layoutmode = ‘normal‘
        codec = ‘utf-8‘
        pageno = 1
        scale = 1
        showpageno = True
        laparams = 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) % 360
                interpreter.process_page(page)
            fp.close()
            device.close()
            content= outfp.getvalue()
            outfp.close()
        except Exception, e:
            print "Exception:%s",e
            self.builtin.log(e)
        content=content.replace(‘\n‘,‘‘).replace(‘\t‘,‘‘).strip(‘\n‘)
        print u"pdf file content:%s"% content#.encode(‘utf-8‘).strip()
        return content

    def _diffContent(self,path,p_dict):
        result=dict()
        try:
            pdfContent=self._readPdf(path)
            fail=0
            for 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]]=fail
        except Exception, e:
            print "Exception:%s",e
            self.builtin.log(e)
        return result

if __name__ == "__main__":
    d = pdfContentKeywords()
    print d.handlepdf("C:\\Print.pdf",{"船名/航次:":"CMACGMFIDELIO/B14WESVLC/VALENCIA"},‘[email protected]‘,False)
    #d._readPdf("")

  

时间: 2024-10-04 19:05:07

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

怎么直接编辑修改PDF文件内容

现在的一些办公文档普遍都是PDF格式,很多文档在传递时也都会转成PDF,但这种格式文件有一个不便之处,就是编辑处理起来没有有Word文档那么流畅顺手.对此,很多初涉职场或是初用PDF文件的人都不怎么会运用这个格式的文档.那么PDF文件该怎么修改内容呢? 不是所有pdf文件都是可以随意修改的,有些pdf扫描文件就不能像普通文档一样修改文字了,因为扫描的形成的文件内容都是图片格式.设置了加密保护的文档在打开时也是需要输入密码后才可以正常编辑. 要用pdf编辑工具打开pdf文件,Adobe Reade

如何使用PDF编辑工具添加PDF页眉页脚

不管是在学习中还是在工作中,都会使用到PDF文件,在很多的时候,大家都会使用到PDF文件,对于PDF文件的修改,则是需要使用到PDF编辑软件的,那么,如何使用PDF编辑工具添加PDF页眉页脚呢,是不是有很多的小伙伴都想知道应该怎么做呢,那就可以看看下面的文章,说不定就知道了哦. 1.打开运行迅捷PDF编辑器,在编辑器中打开需要修改的PDF文件. 2.打开文件后,选择编辑器中菜单栏里的文档,然后选择文档中的页眉页脚,在页眉页脚工具中有添加,全部删除以及管理,点击添加. 3.点击添加后,在添加的页面

怎样用PDF编辑器修改PDF文件内容

在日常工作和学习中都会使用到PDF文件,PDF文件不像Word文档可以直接修改编辑,PDF文件的编辑和修改是需要使用到PDF编辑工具的,那么,怎样用PDF编辑器修改PDF文件内容呢,是不是有很多的小伙伴想知道怎样操作的呢,那就一起来看看下面的文章了解一下吧. 1.打开运行PDF编辑器,在编辑器中打开需要修改的PDF文件. 2.打开文件后,选择编辑器中菜单栏里的工具,在工具中选择内容编辑,内容编辑中有内容编辑工具以及添加工具,点击内容编辑工具. 3.点击内容编辑工具后,在内容编辑工具中有全部内容,

如何修改PDF文件内容,一种方法省时省力

如何修改PDF文件内容呢?现在我们在使用PDF文件的时候,会遇到PDF文件中内容错误等问题,想要修改PDF文件不知从何下手,想要修改PDF文件就可以使用PDF编辑器来进行操作,下面小编就为大家操作一下修改PDF文件内容的方法. 具体操作步骤如下:1:首先将PDF编辑器安装到自己的电脑中,打开PDF编辑器将PDF文件添加到软件中.2:在软件中可以找到内容编辑工具,点击内容编辑工具,在下面内容的位置双击就可以选中需要更改的文字内容了.3:选中文字内容后,在上面可以找到颜色.字体.大小等设置,将文字设

怎么修改PDF文件内容呢?你知道这种方法吗?

怎么修改PDF文件内容呢?想要修改PDF文件内容就可以使用专业的PDF编辑器来进行操作,但是很多人不知道PDF编辑器怎么修改PDF文件,修改PDF文件内容推荐使用迅捷PDF编辑器来进行操作,下面小编就为大家分享一下迅捷PDF编辑器修改PDF文件的操作方法. 操作软件:迅捷PDF编辑器 操作步骤如下: 1:首先将迅捷PDF编辑器安装到自己的电脑中,打开PDF编辑器,将PDF文件添加到软件中. 2:在软件界面找到内容编辑工具,点击内容编辑工具,在下面内容位置双击,就可以直接修改PDF文件内容了. 3

使用PDF编辑器快速删除PDF文件内容技巧

我们在接触PDF文件的时候难免会对文件进行修改与编辑,但是大家都应该很清楚,PDF格式的文件是一种比较特殊而又简单的文件,文件特殊到需要使用专业的软件来修改这种文件,下面我们就一起来看看怎么删除pdf文件中不需要的文字吧! 1.打开电脑,在浏览器中输入"迅捷PDF编辑器",搜索该软件,并将它下载安装到电脑上. 2.运行软件,点击"打开"按钮,将要删除文字内容的PDF文件添加到软件的操作界面. 3.然后点击"编辑内容"按钮,鼠标点击你需要修改的文字

pdf文件内容查看器 -- 采用wpf开发

前言 pdf是一种应用非常广的版式文档格式,已成为事实上的国际标准.关于pdf格式的文章汗牛充栋,本文也是关于pdf格式的文章,但是本文不是纸上谈兵:本人这几周一直研究pdf格式内容,不但对pfd格式的内容有所了解,同时也写了一款软件,可以方便查看pdf文件内容.使用该软件,同时结合pdf相关文章,可以很快掌握pdf格式内容. 软件截图:软件下载地址 点我下载 pdf文件内容简要介绍 这里对pdf文件格式做个粗略介绍,只有了解了这些内容,才能知道如何使用该软件. pdf文档总结构如下: 1)he

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

这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应用.主要参考了一些已有的博客内容,代码. 主要思路是首先利用一个做项目的形式,描述所做的问题,运行环境,和需要安装的库,然后写代码,此代码是在python2.7中运行,然后写出在python3.6中运行的代码,并详细解释python2.7和python3.6中python库的一些不同之处,最后详细的

在线打开浏览PDF文件的各种插件

实现在线浏览PDF文件的实用jQuery插件 阅读目录 PDFObject pdf.js jsPDF jQuery Media Plugin Google Docs PDF viewer ZOHO Viewer Anychart:使用JavaScript导出PDF jQuery Document Viewer 在web开发当中我们经常需要进行需要在线浏览PDf内容,在线嵌入动态pdf,传统的解决方法安装客户端PDF阅读器,如果是在谷歌是可以在线浏览的,因为他自身就带了一些插件,以前遇到这样的问题