首页 > 编程语言 >【pywinauto 库】启动PC端应用程序 - 上篇

【pywinauto 库】启动PC端应用程序 - 上篇

时间:2025-01-19 10:09:40浏览次数:1  
标签:None 启动 pywinauto 宏哥 应用程序 PC line start

一、简介

经过上一篇的学习、介绍和了解,想必小伙伴或者童鞋们,已经见识到pywinauto的强大了,今天继续介绍pywinauto,上一篇已经可以打开计算器了,这里宏哥再提供其他方法进行打开计算器和非电脑自带程序。pywinauto 可以启动电脑自带的应用程序,也可以启动电脑安装的应用程序。

二、运行指定的应用程序

运行指定的应用程序,顾名思义就是用户指定运行那款程序,就运行那款程序。宏哥这里将其分为两大类:电脑自带的应用程序,如:记事本、计算器等和电脑安装的应用程序,如:QQ、微信等。分好后,接下来看宏哥是如何这两类应用程序的。

2.1 启动电脑自带的应用程序

上一篇已经启动计算器了,今天宏哥启动一下记事本,给小伙伴或者童鞋们来演示一下。

通过start() 方法指定exe应用程序的名称即可。start()方法用于启动一个可执行程序

def start(self, cmd_line, timeout=None, retry_interval=None,
              create_new_console=False, wait_for_idle=True, work_dir=None):
        """Start the application as specified by cmd_line"""
        # try to parse executable name and check it has correct bitness
        if'.exe'in cmd_line and self.backend.name == 'win32':
            exe_name = cmd_line.split('.exe')[0] + '.exe'
            _warn_incorrect_binary_bitness(exe_name)

        if timeout is None:
            timeout = Timings.app_start_timeout
        if retry_interval is None:
            retry_interval = Timings.app_start_retry

        start_info = win32process.STARTUPINFO()

        # we need to wrap the command line as it can be modified
        # by the function
        command_line = cmd_line

        # Actually create the process
        dw_creation_flags = 0
        if create_new_console:
            dw_creation_flags = win32con.CREATE_NEW_CONSOLE
        try:
            (h_process, _, dw_process_id, _) = win32process.CreateProcess(
                None,                     # module name
                command_line,            # command line
                None,                     # Process handle not inheritable.
                None,                     # Thread handle not inheritable.
                0,                         # Set handle inheritance to FALSE.
                dw_creation_flags,        # Creation flags.
                None,                     # Use parent's environment block.
                work_dir,                # If None - use parent's starting directory.
                start_info)                # STARTUPINFO structure.
        except Exception as exc:
            # if it failed for some reason
            message = ('Could not create the process "%s"\n'
                       'Error returned by CreateProcess: %s') % (cmd_line, str(exc))
            raise AppStartError(message)

        self.process = dw_process_id

        if self.backend.name == 'win32':
            self.__warn_incorrect_bitness()

        def app_idle():
            """Return true when the application is ready to start"""
            result = win32event.WaitForInputIdle(
                h_process, int(timeout * 1000))

            # wait completed successfully
            if result == 0:
                return True

            # the wait returned because it timed out
            if result == win32con.WAIT_TIMEOUT:
                return False

            return bool(self.windows())

        # Wait until the application is ready after starting it
        if wait_for_idle and not app_idle():
            warnings.warn('Application is not loaded correctly (WaitForInputIdle failed)', RuntimeWarning)

        self.actions.log("Started " + cmd_line + " application.")

        return self

相关参数:

  • cmd_line: 是包含路径的启动应用程序的命令以及启动参数

  • timeout: 启动程序的超时时钟设置,默认为5s

  • create_new_console: 创建新的控制台,默认不创建

  • wait_for_idle: 是否等待到程序的Idle状态

  • work_dir: 指定工作目录

1、代码设计

2、参考代码

# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-01-18
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Windows GUI自动化测试-2-pywinauto 启动PC端应用程序(详细教程)
'''

# 3.导入模块

from pywinauto.application import Application
# 启动记事本
app = Application(backend="uia").start("notepad.exe")

3、运行代码

运行代码,右键Run'Test',就可以看到控制台输出,如下图所示:

运行代码后电脑端的动作(启动记事本)。如下图所示:

2.2 启动电脑安装的应用程序

这里以大家熟悉的微信为例,属性-查看快捷方式,如下图所示:

1、代码设计

2、参考代码

# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-01-18
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Windows GUI自动化测试-2-pywinauto 启动PC端应用程序(详细教程)
'''

# 3.导入模块

from pywinauto.application import Application
# 启动微信
app = Application(backend="uia").start(r"D:\WeChat\WeChat.exe")

3、运行代码

运行代码,右键Run'Test',就可以看到控制台输出,如下图所示:

运行代码后电脑端的动作(启动微信)。如下图所示:

小结

今天主要分享和讲解了电脑(PC端)系统自带的应用程序,如:记事本、计算器等等,以及电脑(PC端)系统安装的应用程序,如QQ、微信等等。如何启动以及启动的几种方法,非常简单。

原创 北京宏哥

标签:None,启动,pywinauto,宏哥,应用程序,PC,line,start
From: https://www.cnblogs.com/o-O-oO/p/18676860

相关文章

  • 免费下载CapCut海外版,解锁剪映VIP功能无广告
    前言大家好,今天给大家带来一个超级实用的教程——剪映海外版CapCut下载:免费解锁剪映VIP功能的完整步骤!剪映是目前非常流行的视频编辑软件,它让我们的短视频创作变得更加简单和高效。不管是记录生活点滴、制作旅行回忆,还是做一些创意短视频,剪映都提供了非常强大的功能支持。除......
  • JAVA-Exploit编写(2)--HttpClient库使用
    目录1.HttpClient简介1.1ApacheHttpClient特性1.2 ApacheHttpClient使用流程2.依赖导入3.HttpClient属性4.GET方式请求4.1 test2.php4.2不携带参数请求 4.3 携带参数提交4.4 支持URIBuilder对象的使用 5.POST请求5.1test3.php5.2 单个参数提交......
  • Invicti v25.1.0 for Windows - Web 应用程序安全测试
    Invictiv25.1.0forWindows-Web应用程序安全测试Invicti(formerlyNetsparker)|WebApplicationandAPISecurityforEnterprise请访问原文链接:https://sysin.org/blog/invicti/查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgInvicti是一种自动化但完全......
  • Android Audio基础(53)——PCM逻辑设备Write数据
    1.前言本文,我们将以回放(Playback,播放音频)为例,讲解PCMData是如何从用户空间到内核空间,最后传递到Codec硬件。在ASoC音频框架简介中,我们给出了回放(Playback)PCM数据流示意图。:对于Linux来说,由于分为userspace和kernelspace,而且两者之间数据不能随便互相访问。因此用......
  • 【韩国汉阳大学主办】第六届土木建筑及灾害防控国际学术会议暨第三届智慧城市建筑与基
    第六届土木建筑及灾害防控国际学术会议暨第三届智慧城市建筑与基础设施耐久性国际学术会议(CADPC&DuraBI2025)20256thInternationalConferenceonCivil,ArchitectureandDisasterPreventionandControl&3rdInternationalConferenceonDurabilityofBuildinga......
  • 数据流应用程序:特点、部分、框架、实例、相关学术分享
    目录关键特点组成部分技术框架应用实例相关学术会议分享数据流应用程序是一种处理实时数据流的程序。这类应用程序能够接收、处理和分析连续不断的数据流,并实时生成结果或执行特定的操作。关键特点实时性:数据流应用程序能够实时处理数据,进行快速响应,以便及时捕捉事件......
  • Spark 源码解析(二) 根据 SparkRpc 自己动手实践一个跨节点通信
     目录一、框架流程:二、Maven搭建Scala导入POM依赖三、根据流程进行编写1、实例 Master2、创建 RpcEnv3、创建RpcEndpoint4、生成RpcEndpointRef5、RpcEndpointRef发送消息 6、防止还没收到消息程序就结束运行7、验证一下,看看结果四、完整代码一、框架......
  • 【通讯协议】OPC协议
    OPC通讯协议特点:支持多种数据结构和负责数据类型,需要多的硬件和软件资源,成本较高,安全性较高。应用场景:连接多个不同工业自动化设备什么是OPC通讯协议OPC是英文“OLEforProcessControl”的缩写,是工业自动化领域中的一种工业通信标准。它通过定义一些在不同平台上具有通用性......
  • vPC Object Tracking
    未启用vPCobjecttracking当primary设备上承载peer-link和uplinks的vPC的板卡发生故障时,即便secondary设备运行正常,也会导致完全流量黑洞。因为peer-link断开,secondary会挂起vPC VLAN/SVI,primary设备上的vPC仍将保持启用状态但同时上行链路断开,(南北向)流量就会被丢弃......
  • 【PCL】Segmentation 模块—— 圆柱模型分割(Cylinder model segmentation)
    1、简介PCL(PointCloudLibrary)中的圆柱模型分割CylinderModelSegmentation是一种从点云数据中提取圆柱体模型的技术。它通过识别点云中符合圆柱体几何形状的部分,将圆柱体从其他几何形状中分离出来。1.1主要步骤预处理:对点云进行去噪、下采样等操作,以减少数据量并提......