精华内容
下载资源
问答
  • 五大最佳自动化软件测试工具

    千次阅读 2019-10-22 14:39:45
    最好的自动化软件测试工具 对测试自动化的依赖性增加导致大量自动化软件测试工具的出现,使得很难确定哪些是最好的。为了帮助您完成自动化工作,我们根据自己和他人的经验创建了五大最佳自动化软件测试工具列表。 ...

    最好的自动化软件测试工具

    对测试自动化的依赖性增加导致大量自动化软件测试工具的出现,使得很难确定哪些是最好的。为了帮助您完成自动化工作,我们根据自己和他人的经验创建了五大最佳自动化软件测试工具列表。

    1. Selenium

    Selenium可以说是web开发人员和测试人员中最受欢迎的自动化软件测试工具。它于2004年首次发布,从那时起它发生了很大变化。最新版本的Selenium包含几个组件,包括Selenium IDE和Selenium WebDriver。

    Selenium IDE是一个用于Selenium测试的完整集成开发环境(IDE),主要用于创建快速错误复制脚本和脚本,以帮助进行自动化辅助探索性测试。另一方面,Selenium WebDriver是一个用于驱动浏览器的特定于语言的绑定的集合,它的开发是为了更好地支持动态网页。Selenium与所有主流Web浏览器兼容,并支持许多流行的编程语言,包括JavaScript,Java,Ruby,Python,PHP和C#,仅举几例。虽然Selenium可以在没有任何编程技能的情况下编写自动化测试,但复杂的测试脚本需要高级编程技能。

    考虑到Selenium是免费的,开源的,并且得到了一些最大的浏览器供应商的支持,所有想要具有竞争力的自动化测试人员都应该将Selenium视为专业投资,至少要熟悉它。

    2.Appium

    Appium是一款自动化软件测试工具,可与本机,混合和移动Web应用程序配合使用。随着移动应用程序的增加和主要应用程序商店的竞争日益激烈,迫切需要向消费者提供高质量的应用程序。

    Appium的目标是在没有SDK或重新编译的情况下自动化移动应用程序测试。Appium允许测试人员使用他们喜欢的工具和编程语言编写测试。开始使用Appium几乎不容易,这个卓越的自动化软件测试工具是开源的,并在GitHub上公开托管。

    Appium已成功用于自动化大型回归测试,将手动测试用例转换为自动脚本等。因为它既支持Android又支持iOS,因此无需为每个平台学习新语言,从而节省时间并符合大多数应用开发人员的需求。

    3. Katalon Studio

    Katalon Studio是一个基于Selenium和Appium框架构建的跨平台自动化测试解决方案。它完全免费,易于部署,其超过100,000名自动化测试人员的活跃社区创建了大量的教程和指南,使学习如何轻松使用Katalon Studio。

    非程序员可以使用Katalon Studio记录测试脚本,而具有一些编程知识的自动化测试人员可以探索Katalon Studio的一些更高级的功能,并使用Groove,Java或JavaScript创建功能强大的自动化脚本。

    Katalon Studio可与QA流程中的常用工具配合使用,并可集成到CI / CD流程中。还有一个简化版的Katalon Studio,名为Katalon Recorder,它可以在几秒钟内安装在Chrome和Firefox上。

    4. Cucumber

    Cucumber是一种流行的自动化软件测试工具,支持行为驱动开发(BDD),这是一个软件开发过程,在开发过程中实现重要的验收测试场景,以帮助组织最大限度地利用软件测试。

    虽然Cucumber最初专门用于Ruby测试,但它现在通过各种实现支持各种不同的编程语言,包括JavaScript,Java,PHP和Lua。Cucumber还有自己的编程语言,称为Gherkin。Gherkin用于定义测试用例,旨在提供人类可读性,其目的是促进BDD实践。

    Cucumber非常适合那些希望专注于最终用户体验并且甚至涉及那些无法编码的利益相关者的人。它也是免费的,易于设置,已经下载超过3000万次,使其成为世界上最流行的BDD自动化软件测试工具。

    5. Eggplant Functional

    Eggplant Functional由Doug Simons,Jonathan Gillaspie和John McIntosh构思,并于2002年由Redstone Software首次发布。与此列表中的其他自动化软件测试工具不同,Eggplant Functional使用基于图像的方法进行测试,而不是从对象角度查看测试的应用程序。这意味着用于构建测试应用程序的技术与应用程序运行的系统无关。

    可以使用一些最流行的持续集成和应用程序生命周期管理(ALM)工具的插件,包括IBM UrbanCode,Bamboo,HP Application Lifecycle Management,IBM RQM和Jenkins等。由于Eggplant Functional已经获得了其智能图像识别方法的专利,因此它在市场上享有一定的优势地位,但其成就独立存在。

    结论

    自SQA,Mercury和Segue时代以来,自动化测试已经成熟。现代自动化软件测试工具功能多样,经过精心设计,并且能够支持任何声音测试策略。在选择自动化软件测试工具时,重要的是不要让工具的受欢迎程度和围绕它的炒作影响决策过程。

    展开全文
  • 工业自动化软件

    千次阅读 2012-09-21 09:59:09
    工业自动化软件技术的发展   目前在国外,很多发达国家及有些发展中国家普遍采用美国Wonderware工业自动化软件套件技术,根据用户需求构建系统,实现对复杂工业大系统的控制与管理.例如,在20世纪90年代印度最大的...
    工业自动化软件技术的发展 
           目前在国外,很多发达国家及有些发展中国家普遍采用美国Wonderware工业自动化软件套件技术,根据用户需求构建系统,实现对复杂工业大系统的控制与管理.例如,在20世纪90年代印度最大的TISCO钢铁公司采用美国Wonderware工业自动化软件系统套件技术实现了直接与ERP通信,从Internet上直接接受用户订单后,通过生产执行系统(MES)把总公司和职能部门,分厂,车间直至各条生产线都采用统一的控制,数据和信息平台纳入管理,系统开发周期短,系统开发和运行,维护成本低,由于软件组件套件技术可方便地实现系统的无缝集成,可靠性高,实现了从接受订单,原材料订购,产品生产,直至把产品运送到用户手中的全公司统一的自动化监控与信息化管理,效率极高.美国Wonderware公司的软件套装组件系统是工业界第一个集成的工业自动化软件包FactorySuite,它从根本上改变了人们的传统观念以及在制造行业存在了多年的从上到下的信息流模式.除了上述核心组件外,还有Industrial SQL数据分析工具,SCADAlarm企业级的电话/报警系统等等。
            总之Wonderware的Factory Suite是套装的软件组件系统,可以根据需要选配组件模块使系统实现无缝集成,给企业信息化提供了完整的解决方案.如在钢铁行业中,采用美国Wonderware的I/OSever技术和InSQL Server技术,建立统一的控制,数据,信息平台,效果极好,可实施建立产品流转动态跟踪系统实现从原材料到成品的全线动态跟踪,建立生产信息动态管理系统,实现生产计划,生产调度,库房(包括原料,半成品库,热处理,成品库)管理,生产作业和过程管理,合同管理,质量管理,工艺规程在线指导子系统,生产信息动态查询,统计,分析管理等,由于管理与控制都是动态实现,没有最先进的软件技术支撑和可以无缝集成的软件套件组件搭建系统,很难想象研发工作量有多大,成功率有多高,真正意义上的CIMS系统能否实现。
             近年来工业自动化软件技术在多个方面都有了长足的发展,其中特别值得关注的是系统开发环境和系统构架方面的新进展.集成开发环境(IDE)通过应用组件实现工程重用,Industrial ApplicationServer的组件对象体系结构可以显著地提高生产力.组件对象模型有利于开发代表工厂设备的可重用的应用对象.在FactorySuite IDE内部建立的应用对象包含与自动化设备有关的所有必要的元素,例如历史参数,标记,报警与事件,文档,脚本,安全和通信参数.可以建立,复制和部署一个可重用组件的模板库,提高快速应用软件开发能力.每个组件模板支架变化传播特性,因此,一个元素的改变可以自动地被传播到所有受影响的组件或选择的组件,节省了宝贵的工程时间和成本.工厂模型体系结构用户可以把预先设计的应用对象变成利用最佳惯例和公司的工程标准的模板.获得灵活的应用对象可以包含代表物理工厂设备监控自动化策略或更高级别的生产策略的知识和应用代码.模板库可以把应用工程变成一个装配过程,而不是一种程序编制工作,因而可以显著提高不同项目的生产率.IDE是一个多开发者环境,它支持公司利用他们的工程资源,在一个项目上分配多名工程师.IDE通过利用高效率的注册/注销过程支持多开发人员,它为每个应用程序组件提供了一种历史记录审核跟踪机制,包括用户标识符,时期与时间戳,以及关于变化的详细的摘要信息.由于应用配置信息保存在一个核心项目库(SQL Server数据库)中,因此可以对整个应用进行版本控制.注册/注销过程允许工程师在旅行或者离开现场时随身携带组件,为他们提供了最大的灵活性. IAS(Industrial Application Server)将工业自动化应用程序的开发设计生产力与可伸缩性带入了一个新纪元.它提供了全新的一层实时数据获取,报警与事件管理,数据处理服务及协作开发功能,这些功能从最底层开始就是针对用于工业自动化应用程序而设计的.IAS是简化分布式自动化应用程序开发,部署,维护及管理的一种基础架构,它是建立在Invensys的 ArchestrATM架构基础上的新软件组件.全面的 ArchestrA工厂自动化与信息架构从一开始就设计为利用最新软件技术延长传统系统的使用寿命.不管自动化应用程序是用在离散制造业,生产工厂,远程 SCADA操作,公共事业,还是用在这些运营类型的任何组合中,ArchestrA架构均能将其涵盖在内.IAS建立在ArchestrA架构上,明显的优势在于:分布式点到点架构;一个全球联网的域名空间;集成化历史,脚本,报警及安全机制;直观的多用户开发环境;基于组件的工厂与应用模型;符合21 CFR Part11规范要求;对用户而言可显著降低工程成本 ;降低拥有成本;响应迅速,能适应成长需要;坚定不移的开放性.它为简化分布式自动化应用的开发,部署,维护与管理提供了基础.IAS提供了新一级的实时数据获取,报警与事件管理,数据操作服务,以及协作工程能力,这些能力从一开始就是专门为工业自动化应用设计的,使制造厂家,OEM和系统集成商(SI)能够显著降低自动化系统的工程,购买和维护费用,同时,用户可以灵活建造自动化系统,增强了对新的需求的响应能力.IAS是建立在Invensys 的ArchestrA 体系结构之上的一个强大的新应用平台.综合性的ArchestrA 工厂自动化与信息体系结构从一开始就被设计为利用最新的软件技术延长传统系统的寿命.不论是装配制造厂,制炼厂,远程SCADA运转,公用事业或者这些业务营运类型的任何组合中的自动化应用,以ArchestrA为基础的体系结构都能够胜任. 从系统层次考虑,最近的工业自动化软件系统正利用先进的软件技术朝着集成化,网络化,平台化,综合管理等方向发展. 
    (1) 工业自动化软件的集成化 
            以前的工业自动化软件已经考虑到对设备和多系统的集成观点,但是集成的范围往往集中在对局部系统或分厂系统,而没有考虑更大范围的集成,而新的自动化软件系统已经考虑到大范围,区域性以及全厂级的系统集成,提供总体的集成解决方案。
    (2) 工业自动化软件的网络化 
            随着数据的分散性以及网络的多样性,工业自动化软件系统的信息正朝着信息总线的方向发展,信息总线的方式改变了过去需要将数据集中采集和处理的观念,相当于在数据监控层铺设了一条信息总线,各个子系统只要挂接在该信息总线上,就可以实现各个系统间的相互通讯,实现了全分布的监控系统。比如基于Wonderware FactorySuiteA2构建的监控系统,就是通过在整个系统中部署在每台电脑中的Platform进行信息交互.由于工业自动化软件间的信息交互越来越多,需要在单台机器上实现对多台机器上的软件系统进行集中远程管理的功能,因此网络化的管理也是自动化软件的发展方向.目前多家国内外的工业自动化软件企业就实现了网络管理,Wonderware公司基于微软管理控制台(MMC)技术的系统管理控制台SMC(System Management Console)就可以实现对数据采集软件,日志文件,部署的对象等实现集中的远程管理。
    (3) 工业自动化软件中面向对象技术的应用 
            面向对象方法包括封装性,继承性,多态性等特点,这些特点使面向对象方法在软件领域得到迅速的发展,在工业自动化领域,很多控制对象同样具有面向对象技术中的"对象"属性,也引起了人们的注意,控制工程师和控制软件开发人员也试图将面向对象的技术应用到工业自动化领域,但目前基本上仍停留在针对某个控制系统的软件设计和控制软件的软件设计中,这些都说明面向对象的技术可以应用在工业自动化领域,但没有真正将面向对象技术应用到控制系统的整体系统设计中.这就是要将面向对象的技术优势引入到整个自动化系统的设计之中,而不是简单的停留在某个具体的软件设计之中的.总之,传统的面向功能的设计方法集中在控制系统的局部,围绕某个功能的实现为主线,而在嵌入面向对象技术的自动化软件平台Wonderware Industrial ApplicationServer上,采用面向对象思想设计监控系统,要充分发挥面向对象技术的封装性,继承性的优势,同时采用抽象对象的方法来看待整个监控系统的组成.Wonder- ware公司推出了一款嵌入面向对象技术的新产品—Wonderware Industrial Application Server.该产品充分发挥了面向对象的技术优势,提供了供自动化工程师选择使用的多个基础模板,将程序中的面向对象技术屏蔽掉,只需要经过客户化的配置以及扩展即可以满足工业自动化系统的设计和规划工作,从而使工程师从简单复杂耗时的程序模块设计中解放出来,将主要的精力集中在系统控制模型以及控制算法上,大大缩短了工业自动化系统的设计和上线时间,并提高了系统的重用性. 
    (4) 工业自动化软件系统的平台化 
             在工业自动化软件系统的发展过程中,由于涉及到多种功能的实现,因此在20世纪80年代末期和20世纪90年代,根据模块功能的区别,实现了软件系统的模块化.而由于工业自动化系统设计的范围及广度的增加,需要一个统一的平台软件,实现各个功能的统一运行,国内外大的工业自动化软件企业都将自己的模块化软件统一运行在自己的平台之上,而且该平台具有高度的开放性和扩展性,相关厂商的产品就可以在该平台上进行开发。
    (5) 工业自动化软件系统的综合管理化 
            目前各个工业自动化软件厂商不仅是为企业提供监控功能软件的厂商,而且能根据工业现场的要求,提供丰富的管理软件,向着工业自动化解决方案厂商的转变.他们为企业提供了资产管理,质量,批次管理等丰富的软件.而且随着企业信息化的推进,目前都在积极提供为企业ERP进行数据支撑的MES解决方案.最明显的就是不少厂商推出了基于S95标准的MES解决方案,比如Wonderware公司的生产事件模块PEM(Production Events Module)就是遵循S95标准的生产效能跟踪管理的解决方案。 在工业自动化软件支持的数据点数,处理能力以及可伸缩性或扩展性等方面,都有明显的发展和提高.厂商考虑越来越多的是系统随时间推移而增值和延长项目的生命周期,从整体上提高系统建设的投资回报率。



    展开全文
  • GEM/SECS设备自动化和EAP自动化软件

    万次阅读 热门讨论 2019-09-24 14:19:16
    半导体行业也工作七八年了,发现目前国内的SEMI标准软件基本没有,半导体fab厂也只是简单用一下控制指令功能逻辑都比较简单。对设备的监控这块更是缺失。对基本的异常 远程都处理不了,相当于一个半自动化状态。 对...

    半导体行业也工作七八年了,发现目前国内的SEMI标准软件基本没有,半导体fab厂也只是简单用一下控制指令功能逻辑都比较简单。对设备的监控这块更是缺失。对基本的异常 远程都处理不了,相当于一个半自动化状态。
    对GEM流程和SECS协议也比较精通,就想和几个朋友想出来单干。目前SEMI这块底层已经完善,也做了简单的Demo。界面比较丑陋见笑
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 老板又出难题,气得我写了个自动化软件

    万次阅读 多人点赞 2021-01-09 20:00:00
    作者:小小明 编辑:朱小五 1024G_...下面使用PySimpleGUI开发一个图形工具,使用以下命令安装该库: pip install PySimpleGUI 如果是下载速度慢的可以用下面的清华镜像地址下载: pip install PySimpleGUI -i ...

    作者:小小明

    编辑:朱小五

    1024G_Python、数据分析学习资源,免费送(点击)

    日常工作中,领导要求你将一份 Word 文档中的图片存储到一个文件夹内,你可能会一边内心崩溃,一边开始一张张的 另存为

    但假如领导要求你将几百个word文档中的图片全部都拷贝出来,你是不是打算离职不干了?

    就比如下面这些word文档中的图片,你能否快速的把所有图片都拷贝出来呢?

    如果老朋友们看过这篇文章《老板让我从Word中复制出1000张图片?》的话,就应该知道怎么做了。

    不过,上次分享的这种方法还是有缺陷的:把word文档用压缩文件打开,逐个解压的话依然会耗时较长时间,另外里面掺杂了doc格式的word文档,你还需将这些03版本的word文档另存为docx格式。

    今天,将给大家展示一下全新版本!!!

    写个程序,十秒内全部给你转换完毕,并把图片都提取出来,还能批量从真实修改图片格式,而不是简单的修改一下扩展名。

    (文末附带exe可执行程序)

    下面开始展示

    doc格式批量转为docx

    python提供了win32com模块,其中的SaveAs方法可以代替人手批量将文件另存为我们需要的格式。

    win32com包含在pypiwin32模块中,只需安装pypiwin32模块即可:

    pip install pypiwin32
    

    下面的代码将指定目录下的doc文件转换为docx格式,并放在该目录的temp_dir下面:

    from win32com import client as wc  # 导入模块
    from pathlib import Path
    import os
    import shutil
    
    doc_path = r"E:\tmp\答疑整理"
    temp_dir = "temp"
    if os.path.exists(f"{doc_path}/{temp_dir}"):
        shutil.rmtree(f"{doc_path}/{temp_dir}")
    os.mkdir(f"{doc_path}/{temp_dir}")
    
    word = wc.Dispatch("Word.Application")  # 打开word应用程序
    try:
        for filename in Path(doc_path).glob("*.doc"):
            file = str(filename)
            dest_name = str(filename.parent/f"{temp_dir}"/str(filename.name))+"x"
            print(file, dest_name)
            doc = word.Documents.Open(file)  # 打开word文件
            doc.SaveAs(dest_name, 12)  # 另存为后缀为".docx"的文件,其中参数12指docx文件
    finally:
        word.Quit()
    

    运行结果:

    转换得到的文件:

    批量提取docx文档的图片

    docx文档其实也是一个zip压缩包,所以我们可以通过zip包解压它,下面的代码将解压每个docx文档中的图片,我将其移动到临时目录下的imgs目录下:

    import itertools
    from zipfile import ZipFile
    import shutil
    
    if os.path.exists(f"{doc_path}/{temp_dir}/imgs"):
        shutil.rmtree(f"{doc_path}/{temp_dir}/imgs")
    os.makedirs(f"{doc_path}/{temp_dir}/imgs")
    
    i = 1
    for filename in itertools.chain(Path(doc_path).glob("*.docx"), (Path(doc_path)/temp_dir).glob("*.docx")):
        print(filename)
        with ZipFile(filename) as zip_file:
            for names in zip_file.namelist():
                if names.startswith("word/media/image"):
                    zip_file.extract(names, doc_path)
                    os.rename(f"{doc_path}/{names}",
                              f"{doc_path}/{temp_dir}/imgs/{i}{names[names.find('.'):]}")
                    print("\t", names, f"{i}{names[names.find('.'):]}")
                    i += 1
    shutil.rmtree(f"{doc_path}/word")
    

    打印结果:

    提取结果:

    批量图片格式转换

    PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。

    由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3.x,又加入了许多新特性,因此,我们可以直接安装使用Pillow。

    如果安装了Anaconda,Pillow就已经可用了。否则,需要在命令行下通过pip安装:

    pip install pillow
    

    直接修改文件扩展名并不能真实的修改图片格式,通过pillow库我们即可将图片批量真实的转换为jpg格式:

    from PIL import Image
    
    if not os.path.exists(f"{doc_path}/imgs"):
        os.mkdir(f"{doc_path}/imgs")
    
    for filename in Path(f"{doc_path}/{temp_dir}/imgs").glob("*"):
        file = str(filename)
        with Image.open(file) as im:
            im.convert('RGB').save(
                f"{doc_path}/imgs/{filename.name[:filename.name.find('.')]}.jpg", 'jpeg')
    

    转换后:

    完整代码

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # 创建时间:2020/12/25 21:46
    __author__ = 'xiaoxiaoming'
    
    import itertools
    import os
    import shutil
    from pathlib import Path
    from zipfile import ZipFile
    
    from PIL import Image
    from win32com import client as wc  # 导入模块
    
    
    def word_img_extract(doc_path, temp_dir):
        if os.path.exists(f"{doc_path}/{temp_dir}"):
            shutil.rmtree(f"{doc_path}/{temp_dir}")
        os.mkdir(f"{doc_path}/{temp_dir}")
    
        word = wc.Dispatch("Word.Application")  # 打开word应用程序
        try:
            for filename in Path(doc_path).glob("*.doc"):
                file = str(filename)
                dest_name = str(filename.parent / f"{temp_dir}" / str(filename.name)) + "x"
                print(file, dest_name)
                doc = word.Documents.Open(file)  # 打开word文件
                doc.SaveAs(dest_name, 12)  # 另存为后缀为".docx"的文件,其中参数12指docx文件
        finally:
            word.Quit()
    
        if os.path.exists(f"{doc_path}/{temp_dir}/imgs"):
            shutil.rmtree(f"{doc_path}/{temp_dir}/imgs")
        os.makedirs(f"{doc_path}/{temp_dir}/imgs")
    
        i = 1
        for filename in itertools.chain(Path(doc_path).glob("*.docx"), (Path(doc_path) / temp_dir).glob("*.docx")):
            print(filename)
            with ZipFile(filename) as zip_file:
                for names in zip_file.namelist():
                    if names.startswith("word/media/image"):
                        zip_file.extract(names, doc_path)
                        os.rename(f"{doc_path}/{names}",
                                  f"{doc_path}/{temp_dir}/imgs/{i}{names[names.find('.'):]}")
                        print("\t", names, f"{i}{names[names.find('.'):]}")
                        i += 1
        shutil.rmtree(f"{doc_path}/word")
    
        if not os.path.exists(f"{doc_path}/imgs"):
            os.mkdir(f"{doc_path}/imgs")
    
        for filename in Path(f"{doc_path}/{temp_dir}/imgs").glob("*"):
            file = str(filename)
            with Image.open(file) as im:
                im.convert('RGB').save(
                    f"{doc_path}/imgs/{filename.name[:filename.name.find('.')]}.jpg", 'jpeg')
    
    
    if __name__ == '__main__':
        doc_path = r"E:\tmp\答疑整理"
        temp_dir = "temp"
        word_img_extract(doc_path, temp_dir)
    

    最终全部执行完成耗时7s:

    GUI图形化工具开发

    下面使用PySimpleGUI开发一个图形化工具,使用以下命令安装该库:

    pip install PySimpleGUI
    

    如果是下载速度慢的可以用下面的清华镜像地址下载:

    pip install PySimpleGUI -i https://pypi.tuna.tsinghua.edu.cn/simple
    

    以下是完整代码:

    import PySimpleGUI as sg
    
    from word_img_extract import word_img_extract
    
    sg.change_look_and_feel("GreenMono")
    
    layout = [
        [
            sg.Text("请输入word文档所在的目录:"),
            sg.In(size=(25, 1), enable_events=True, key="-FOLDER-"),
            sg.FolderBrowse('浏览'),
        ], [
            sg.Button('开始抽取', enable_events=True, key="抽取"),
            sg.Text(size=(40, 1), key="-TOUT-")
        ]
    ]
    window = sg.Window('word文档图片抽取系统', layout)
    while True:
        event, values = window.read()
        if event in (None,):
            break  # 相当于关闭界面
        elif event == "抽取":
            if values["-FOLDER-"]:
                window["-TOUT-"].update("准备抽取!!!")
                sg.popup('抽取期间程序将处于假死状态,请稍等片刻,提取完成后会弹出提示!!!\n点击ok后开始抽取!!!')
                window["-TOUT-"].update("正在抽取中...")
                word_img_extract(values["-FOLDER-"])
                window["-TOUT-"].update("抽取完毕!!!")
                sg.popup('抽取完毕!!!')
            else:
                sg.popup('请先输入word文档所在的路径!!!')
        print(f'Event: {event}, values: {values}')
    window.close()
    

    运行效果:

    打包exe

    创建并激活虚拟环境:

    conda create -n gui python=3.6
    conda activate gui
    

    注意:创建虚拟环境和激活环境并不是必须,只是为了精简环境,可以跳过

    安装打包所用的包:

    pip install PySimpleGUI
    pip install pillow
    pip install pywin32
    pip install pyinstaller
    

    执行以下命令进行打包:

    pyinstaller -F --icon=C:\Users\Think\Pictures\ico\ooopic_1467046829.ico word_img_extract_GUI.py
    

    常用参数说明:

    • -F 表示生成单个可执行文件

    • -w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!

    • -p 表示你自己自定义需要加载的类路径,一般情况下用不到

    • -i 表示可执行文件的图标

    打包结果:

    带上-w参数打包,可以去掉控制台:

    pyinstaller -wF --icon=C:\Users\Think\Pictures\ico\ooopic_1467046829.ico word_img_extract_GUI.py
    

    给GUI加入进度条

    改造处理程序,借助生成器反馈程序的处理进度,完整代码如下:

    import itertools
    import os
    import shutil
    from pathlib import Path
    from zipfile import ZipFile
    
    from PIL import Image
    from win32com import client as wc  # 导入模块
    
    def word_img_extract(doc_path, temp_dir="temp"):
        if os.path.exists(f"{doc_path}/{temp_dir}"):
            shutil.rmtree(f"{doc_path}/{temp_dir}")
        os.mkdir(f"{doc_path}/{temp_dir}")
    
        word = wc.Dispatch("Word.Application")  # 打开word应用程序
        try:
            files = list(Path(doc_path).glob("*.doc"))
            if len(files) == 0:
                raise Exception("当前目录中没有word文档")
            for i, filename in enumerate(files, 1):
                file = str(filename)
                dest_name = str(filename.parent / f"{temp_dir}" / str(filename.name)) + "x"
                # print(file, dest_name)
                doc = word.Documents.Open(file)  # 打开word文件
                doc.SaveAs(dest_name, 12)  # 另存为后缀为".docx"的文件,其中参数12指docx文件
                yield "word doc格式转docx格式:", i * 1000 // len(files)
        finally:
            word.Quit()
    
        if os.path.exists(f"{doc_path}/{temp_dir}/imgs"):
            shutil.rmtree(f"{doc_path}/{temp_dir}/imgs")
        os.makedirs(f"{doc_path}/{temp_dir}/imgs")
    
        i = 1
        files = list(itertools.chain(Path(doc_path).glob("*.docx"), (Path(doc_path) / temp_dir).glob("*.docx")))
        for j, filename in enumerate(files, 1):
            # print(filename)
            with ZipFile(filename) as zip_file:
                for names in zip_file.namelist():
                    if names.startswith("word/media/image"):
                        zip_file.extract(names, doc_path)
                        os.rename(f"{doc_path}/{names}",
                                  f"{doc_path}/{temp_dir}/imgs/{i}{names[names.find('.'):]}")
                        # print("\t", names, f"{i}{names[names.find('.'):]}")
                        i += 1
            yield "word提取图片:", j * 1000 // len(files)
        shutil.rmtree(f"{doc_path}/word")
    
        if not os.path.exists(f"{doc_path}/imgs"):
            os.mkdir(f"{doc_path}/imgs")
    
        files = list(Path(f"{doc_path}/{temp_dir}/imgs").glob("*"))
        for i, filename in enumerate(files, 1):
            file = str(filename)
            with Image.open(file) as im:
                im.convert('RGB').save(
                    f"{doc_path}/imgs/{filename.name[:filename.name.find('.')]}.jpg", 'jpeg')
            yield "图片转换为jpg格式:", i * 1000 // len(files)
    
    
    if __name__ == '__main__':
        doc_path = r"E:\tmp\答疑整理"
        for msg, i in word_img_extract(doc_path):
            print(f"\r {msg}{i}", end="")
    

    GUI程序的最终完整代码:

    import PySimpleGUI as sg
    
    from word_img_extract import word_img_extract
    
    sg.change_look_and_feel("GreenMono")
    
    layout = [
        [
            sg.Text("请输入word文档所在的目录:"),
            sg.In(size=(25, 1), enable_events=True, key="-FOLDER-"),
            sg.FolderBrowse('浏览'),
        ], [
            sg.Button('开始抽取', enable_events=True, key="抽取"),
            sg.Text(text_color="red", size=(47, 2), key="error"),
        ], [
            sg.Text("准备:", size=(20, 1), key="-TOUT-"),
            sg.ProgressBar(1000, orientation='h', size=(35, 20), key='progressbar')
        ]
    ]
    window = sg.Window('word文档图片抽取系统', layout)
    while True:
        event, values = window.read()
        if event in (None,):
            break  # 相当于关闭界面
        elif event == "抽取":
            if values["-FOLDER-"]:
                window["error"].update("")
                try:
                    for msg, i in word_img_extract(values["-FOLDER-"]):
                        window["-TOUT-"].update(msg)
                        window['progressbar'].UpdateBar(i)
                    window["-TOUT-"].update('抽取完毕!!!')
                except Exception as e:
                    window["error"].update(str(e))
            else:
                sg.popup('请先输入word文档所在的路径!!!')
    window.close()
    

    重新打包:

    pyinstaller -wF --icon=C:\Users\Think\Pictures\ico\ooopic_1467046829.ico word_img_extract_GUI.py
    

    1024G_Python、数据分析学习资源,免费送(点击)

    运行效果:

    exe下载

    如果有小伙伴对代码不感兴趣,想直接使用打包好的exe软件,扫码关注「快学Python」(非本号)后台回复“0109” ,获取完整代码:

    后台回复“0109”获取完整代码

     

    1024G_Python、数据分析学习资源,免费送(点击)

    展开全文
  • 对测试自动化的依赖性增加导致大量自动化软件测试工具的出现,使得很难确定哪些是最好的。为了帮助您完成自动化工作,我们根据自己和他人的经验创建了五大最佳自动化软件测试工具列表。1. SeleniumSelenium可以说是...
  • python+selenium自动化软件测试(第1章):环境搭建,你也可以直接用Anaconda! 目录 1.1 环境搭建 1.2 pip降级selenium3.0 1.3 解决pip使用异常问题 1.4 Chrome浏览器 1.5 pycharm使用 1.6 selenium3+fire...
  • CheungSSH 中国人自主研发的Linux运维自动化管理服务器软件 管理上千台服务器 ... 运维自动化软件 工具 平台 运维人员必备,系统管理员必备软件 SSH登录 安全 速度快 中国的Ansible Slatstack Puppet
  • Chrome 正在受到自动化软件控制 – 解决办法 上网找了一下发现可以使用chrome_options 设置 disable-infobars 这个参数禁用掉。 然后就顺着这个思路到 selenium 库里面去找到这个文件 F:\Python27\Lib\site-...
  • 与PLC软件编程环境CoDeSys V3.5进行整合了的CodeMeter,避免了自动化软件的盗版及逆向工程(Reverse-Engineering)。在通过加密保护源代码的同时,也可以针对目标系统创建加密及签名的代码。2012年汉诺威工业博览会...
  • 利用营销自动化软件电子邮件营销活动管理 企业不得不寻求营销自己的产品和服务在基础的数字经济的替代手段。一旦导线都通过社交网络的方式或通过购买清单或从过去的销售所产生的线索产生的,新的和创新活动,必须...
  • 自动化软件测试工具

    2014-11-13 09:46:39
    开源功能自动化测试工具:Watir、Selenium、MaxQ、WebInject 开源性能自动化测试工具:Jmeter、OpenSTA、DBMonster、TPTEST、Web Application Load Simulator
  • 一、首先我们要了解我门做软件测试的原因,为什么要做软件测试 1、软件产品的监视和测量 对软件产品的特性进行监视和测量,主要依据软件需求规格说明书,验证产品是否满足要求。所开发的软件产品是否可以交付,要...
  • 自动化软件测试杂谈

    千次阅读 2012-03-28 11:45:11
    写这篇日志其实是有感而发。刚刚偶然看到论坛上有位童鞋在询问...确实,正如我上一篇博文《软件测试工程师的“三十六变”》所写的,自动化测试工程师/架构师是我们测试人员的发展方向之一,要想向技术方面发展的话,可
  • Python自动化测试面试题 一、问答题 1、自动化代码中,用到了哪些设计模式? 答:自动化代码用到过的设计模式: ①单例设计模式 ②工厂模式 ③PO设计模式 ④数据驱动模式 ⑤面向接口编程设计模式 2、什么是Selenium ...
  • 这个是本人在淘宝19.9买的 就公开给你们了 之前也有发过B站 无奈太多 文件太大 只能放弃就分享到博客里面了,需要的可以下载看 这个是17年黑马开的第一期自动化测试版 说实话 老师不怎么好 说话听着就打瞌睡 ,反正快...
  • 关于软件测试行业前景的问题,是很多在行业外观望的同学甚至是刚刚入行的朋友都密切关注的一个问题,毕竟这个问题关系到自己未来的收入,甚至是决定自己的职业发展方向。 那么当真正思考这个大问题的时候,内心是会...
  • CheungSSH 中国人自主研发的Linux运维自动化管理服务器软件 管理上千台服务器 自动化运维软件 批量管理服务器 管理Linux服务器软件 运维自动化工具 开源堡垒机 Ansible Slatstack Puppet
  • 供应企业办公自动化软件OA

    千次阅读 2005-04-25 16:25:00
    产品特色 与其他办公自动化软件相比,君林天下办公自动化系统具有如下鲜明特色:■ 易用:以人为中心的设计 君林天下OA可对组织机构、皮肤、表单、流程、访问权限等可自定义和灵活调整,专业技术团队可根据中小企...
  • python+selenium自动化软件测试

    千次阅读 2017-11-04 13:07:10
    很显然比较繁琐,这并不是最佳自动化解决方案,于是后来有了webdriver。 selenium2 的时代合并了webdriver,也就是我们通常说的selenium,selenium2是默认支持Firefox浏览器的,这点非常方便。 当然也支持...
  • 用手工或者自动化的方式执行测试用例的一个过程 2.软件测试的对象包括哪些? 参考答案: 源程序、目标程序、数据和相关文档 3.试结合软件开发流程模型,描述对应不同的阶段测试需要哪些工作? 参考答案: V模型主要...
  • 透视企业数据 - 办公自动化软件的新发展传统的办公自动化软件,主要解决的是提升工作效率的问题,最常见的就是一些辅助办公的功能,以及诸如内部公告等等。同时,在传统的计划经济模式下,公文被做为办公自动化的最...
  • 以上全是 测试设计员的职责:确定并描述相应的测试技术、确定相应的测试支持工具、定义并维护测试自动化架构、 详述和验证需要的测试环境配置、验证与评估测试途径 21、对于业务流清晰的系统可以利用D贯穿整个测试...
  • 在最近与软件测试人员的谈话中,我不断听到同样的事情:测试自动化在大多数项目中是需要的。合理使用以下指导原则,可以有助于自动化测试工作的开展。 指导原则1:避免过早开发测试脚本 我们鼓励软件测试人员,...
  • 兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。 兼容的类型,如果细分的话,有平台的兼容,网络兼容,数据库兼容,以及数据格 式的兼容。 兼容测试的重点是...
  • 工业自动化软件设计

    千次阅读 2011-11-11 13:22:21
    PANS,Platform of Automation Network System(磐石自动化网络系统平台),是全可视化的集监控、仿真、控制为一体的系统平台。 PANS可以采用面向对象或者针对数据点的方法对数据模型进行快速 组态 ,集成了脚本...
  • VectorCAST-自动化软件测试工具

    千次阅读 2013-11-13 17:30:54
    VectorCAST软件测试解决方案,专门为用户提供自动化的测试和质量保障体系,尤其适用对自身有高安全性和高可靠性要求的嵌入式应用。其功能覆盖了“单元测试”、“集成测试”、“覆盖率分析”、“回归测试”和“静态...
  • 不知不觉间,在软件测试行业野蛮的折腾了七年之久。七年之痒也即将过去,但我还是热爱着软件测试这一份工作,一路坚持,走到现在。经历过各种难题,有过迷茫,有过焦虑失眠。也踩过无数的坑,深知行业的不易。自从91...
  • 兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。 兼容的类型,如果细分的话,有平台的兼容,网络兼容,数据库兼容,以及数据格式的兼容。 兼容测试的重点是,...
  • 然后DriveInstall会使用这个代理来下载所需要的软件,如果你无法下载到软件,我稍后会把已下载的文件上传。 注意在用户和密码中不要有特殊字符(e.g., !,@,#, etc.) 整个安装过程大概需要34G的空间...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,607
精华内容 19,842
关键字:

自动化软件