找回密码
 立即注册
首页 业界区 业界 PC端自动化测试实战教程-2-pywinauto 启动PC端应用程序 ...

PC端自动化测试实战教程-2-pywinauto 启动PC端应用程序 - 上篇(详细教程)

萧海芷 2025-6-5 09:29:51
1.简介

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

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

上一篇已经启动计算器了,今天宏哥启动一下记事本,给小伙伴或者童鞋们来演示一下。
通过start() 方法指定exe应用程序的名称即可。start()方法用于启动一个可执行程序
  1.     def start(self, cmd_line, timeout=None, retry_interval=None,
  2.               create_new_console=False, wait_for_idle=True, work_dir=None):
  3.         """Start the application as specified by cmd_line"""
  4.         # try to parse executable name and check it has correct bitness
  5.         if '.exe' in cmd_line and self.backend.name == 'win32':
  6.             exe_name = cmd_line.split('.exe')[0] + '.exe'
  7.             _warn_incorrect_binary_bitness(exe_name)
  8.         if timeout is None:
  9.             timeout = Timings.app_start_timeout
  10.         if retry_interval is None:
  11.             retry_interval = Timings.app_start_retry
  12.         start_info = win32process.STARTUPINFO()
  13.         # we need to wrap the command line as it can be modified
  14.         # by the function
  15.         command_line = cmd_line
  16.         # Actually create the process
  17.         dw_creation_flags = 0
  18.         if create_new_console:
  19.             dw_creation_flags = win32con.CREATE_NEW_CONSOLE
  20.         try:
  21.             (h_process, _, dw_process_id, _) = win32process.CreateProcess(
  22.                 None,                     # module name
  23.                 command_line,            # command line
  24.                 None,                     # Process handle not inheritable.
  25.                 None,                     # Thread handle not inheritable.
  26.                 0,                         # Set handle inheritance to FALSE.
  27.                 dw_creation_flags,        # Creation flags.
  28.                 None,                     # Use parent's environment block.
  29.                 work_dir,                # If None - use parent's starting directory.
  30.                 start_info)                # STARTUPINFO structure.
  31.         except Exception as exc:
  32.             # if it failed for some reason
  33.             message = ('Could not create the process "%s"\n'
  34.                        'Error returned by CreateProcess: %s') % (cmd_line, str(exc))
  35.             raise AppStartError(message)
  36.         self.process = dw_process_id
  37.         if self.backend.name == 'win32':
  38.             self.__warn_incorrect_bitness()
  39.         def app_idle():
  40.             """Return true when the application is ready to start"""
  41.             result = win32event.WaitForInputIdle(
  42.                 h_process, int(timeout * 1000))
  43.             # wait completed successfully
  44.             if result == 0:
  45.                 return True
  46.             # the wait returned because it timed out
  47.             if result == win32con.WAIT_TIMEOUT:
  48.                 return False
  49.             return bool(self.windows())
  50.         # Wait until the application is ready after starting it
  51.         if wait_for_idle and not app_idle():
  52.             warnings.warn('Application is not loaded correctly (WaitForInputIdle failed)', RuntimeWarning)
  53.         self.actions.log("Started " + cmd_line + " application.")
  54.         return self
复制代码
相关参数:

  • cmd_line: 是包含路径的启动应用程序的命令以及启动参数
  • timeout: 启动程序的超时时钟设置,默认为5s
  • create_new_console: 创建新的控制台,默认不创建
  • wait_for_idle: 是否等待到程序的Idle状态
  • work_dir: 指定工作目录
2.1.1代码设计

1.png

2.1.2参考代码
  1. # -*- coding:utf-8 -*-
  2. # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
  3. # 2.注释:包括记录创建时间,创建人,项目名称。
  4. '''
  5. Created on 2025-01-18
  6. @author: 北京-宏哥
  7. 北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
  8. Project: Windows GUI自动化测试-2-pywinauto 启动PC端应用程序(详细教程)
  9. '''
  10. # 3.导入模块
  11. from pywinauto.application import Application
  12. # 启动记事本
  13. app = Application(backend="uia").start("notepad.exe")
复制代码
2.1.3运行代码

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

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

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

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

2.1.1代码设计

5.png

2.1.2参考代码
  1. # -*- coding:utf-8 -*-
  2. # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
  3. # 2.注释:包括记录创建时间,创建人,项目名称。
  4. '''
  5. Created on 2025-01-18
  6. @author: 北京-宏哥
  7. 北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
  8. Project: Windows GUI自动化测试-2-pywinauto 启动PC端应用程序(详细教程)
  9. '''
  10. # 3.导入模块
  11. from pywinauto.application import Application
  12. # 启动微信
  13. app = Application(backend="uia").start(r"D:\WeChat\WeChat.exe")
复制代码
2.1.3运行代码

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

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

3.小结

今天主要分享和讲解了电脑(PC端)系统自带的应用程序,如:记事本、计算器等等,以及电脑(PC端)系统安装的应用程序,如QQ、微信等等。如何启动以及启动的几种方法,非常简单。
 好了,时间不早了今天就分享到这里,感谢你耐心地阅读!
                                                公众号(关注宏哥)                                                                                                                           微信群(扫码进群)                                                                                                                                                          客服微信               
               
8.png
               
9.png
               
10.png

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册