pywinauto桌面应用自动化01--安装和启动(代码片段)

nikeylee nikeylee     2023-04-07     480

关键词:

目录

一、安装Pywinauto

二、定位元素的工具

三、启动和连接应用程序

1、启动应用程序

2、连接已经打开的应用程序

1)通过进程号连接

2)通过窗口句柄连接

一、安装Pywinauto

pip install pywinauto

官方文档:What is pywinauto — pywinauto 0.6.8 documentation

查看是否安装成功:

pip list 

二、定位元素的工具

查看界面上的元素的相关属性,可用于自动化测试中元素的定位和识别等;

1、网上推荐的inspect工具

  • Spy++ (定位元素工具(win32))
  • Inspect(定位元素工具(uia))
  • UI Spy (定位元素工具)
  • Swapy(可简单生成pywinauto代码)

2、我自己使用的inspect工具

  • Accessibility Insights for Windows

下载地址和官方文档:Accessibility Insights for Windows

是 Windows 官方推荐的辅助工具,用来查看窗口控件的信息。

三、启动和连接应用程序

1、启动应用程序

Pywinauto中backend有两种:win32和uia,默认为win32,win32(可不填)在自带程序中使用,其他需下载安装等程序一般使用uia。

Application的可访问技术适用的应用类型

  • MS UI Automoation API(backend=“uia”)
    • 一般是WinForms、WPF、Store app商店应用、Qt5、浏览器、navicat;
  • win32 API(backend=“win32”)
    • 一般是MFC、VB6、VCL,简单的WinForms控件和大多数旧的应用程序

举例:

1)启动记事本

from pywinauto.application import Application

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

运行后,记事本打开 

2)启动QQ

from pywinauto.application import Application

# 启动QQ
qq_start_path = r"D:\\\\Program Files\\\\Tencent\\\\QQ\\\\Bin\\\\QQScLauncher.exe"
app = Application(backend='uia').start(qq_start_path)

启动QQ换一种写法:

import pywinauto

# 启动QQ
qq_start_path = r"D:\\\\Program Files\\\\Tencent\\\\QQ\\\\Bin\\\\QQScLauncher.exe"
app = pywinauto.Application(backend='uia').start(qq_start_path)

运行后,QQ启动,打开登录窗口

2、连接已经打开的应用程序

1)通过进程号连接

打开记事本程序

打开任务管理器-详细信息,查看进程号PID,如图记事本进程号为30116

 通过进程号连接已经启动的记事本程序

from pywinauto.application import Application

# 通过进程号连接已经启动的记事本程序,记事本进程号为30116
pid = 30116
app = Application(backend='uia').connect(process=pid)

# 输出记事本窗口标题
main_title = app.top_window().get_properties()['texts'][0]
print(main_title)

运行后,输出结果:

*无标题 - 记事本

2)通过窗口句柄连接

打开记事本程序

再打开Accessibility Insights for Windows工具,选中记事本应用后,inspect工具自动识别到窗口,找到记事本的窗口句柄NativeWindowHandle为2564730;

通过窗口句柄连接已经启动的记事本程序

from pywinauto.application import Application

# 通过窗口句柄连接已经启动的记事本程序,记事本的窗口句柄NativeWindowHandle为2564730
handle = 2564730
app = Application(backend='uia').connect(handle=handle)

# 输出记事本窗口标题
main_title = app.top_window().get_properties()['texts'][0]
print(main_title)

运行后,输出结果:

test001.txt - 记事本

如何在linux桌面环境下自动启动程序

  我在本教程中将介绍如何在各种Linux桌面环境下,自动启动某个程序。  GNOME桌面环境  在终端中运行这个命令,启动"StartupApplicationsPreferences"(启动应用程序首选项)GUI。  $gnome-session-properties  点击"Add"(添加)按... 查看详情

在 Windows 8 桌面应用程序认证要求中自动启动

】在Windows8桌面应用程序认证要求中自动启动【英文标题】:AutostartwithinWindows8DesktopAppCertificationRequirements【发布时间】:2012-07-2108:50:22【问题描述】:Windows8桌面(不是Metro!)应用认证要求状态10.2您的应用必须避免在启动时自... 查看详情

windowsgui程序自动化之pywinauto

WindowsGUI程序自动化之pywinauto一.pywinauto的安装与配置  官方英文版文档网址:https://pywinauto.readthedocs.io/en/latest/index.html  >>>>>>待续   查看详情

java桌面应用程序的自动启动?

】java桌面应用程序的自动启动?【英文标题】:Autostartupforjavadesktopapplication?【发布时间】:2010-11-0201:00:08【问题描述】:我使用NetBeans6.1在Java中创建了一个桌面应用程序,并制作了一个应用程序的jar文件。现在我想让它在客户... 查看详情

使用 pywinauto 自动化的 Windows 应用程序不会检测到 TreeView 中的元素,尽管这些元素有自己的特征

】使用pywinauto自动化的Windows应用程序不会检测到TreeView中的元素,尽管这些元素有自己的特征【英文标题】:ThewindowsapplicationautomatingusingpywinautodoesnotdetectelementsinsideaTreeView,despitetheelementshavethereowncharacteristic【发布时间】:2021-05-1... 查看详情

chatgpt桌面版安装教程(代码片段)

概述标题党了,首先声明ChatGPT官方没有桌面版,目前市面上很多的桌面应用也在是浏览器上包了一层,而且大多做的比较粗糙,不太好用,所以都不太推荐。作为一名骨灰级的程序员,ChatGPT的重度使用者,这几天看到网上充斥... 查看详情

用pywinauto实现qt自动化(代码片段)

我试图使用pywinauto自动化一个QT应用程序,问题是pywinauto似乎无法点击或选择大多数对象,当它这样做,他们似乎是完全随机的那些我指定。即使使用诸如"点击输入"正确执行,但项目从未被实际点击。Pywinauto显然能够识别我试... 查看详情

python 桌面应用程序的安装程序和更新程序

】python桌面应用程序的安装程序和更新程序【英文标题】:InstallerandUpdaterforapythondesktopapplication【发布时间】:2012-09-2707:24:17【问题描述】:我正在使用python构建一个桌面应用程序,并使用Pyinstaller将其打包为一个exe。我想通过... 查看详情

pc端应用程序自动化测试——pywinautopywin32pyautogui(代码片段)

1前言PC端自动化测试使用到的python模块主要有pywinauto、win32gui、pyautogui,主要功能如下:pywinauto:主要使用到Application类,用于应用程序管理(打开与关闭应用等)、窗口管理(最小化、最大化、关闭窗口)pywin32:包含win32gui、wi... 查看详情

windows系统怎样查看oracle的安装路径?

答:在桌面上找到计算机,右键管理,点击服务和应用程序,双击服务,找到oracle;点击电脑左下角的开始--运行,输入sqlplus,回车。出现命令窗口;用户名填写scott--回车;密码填写scott,等待几秒就能成功连接上Oracle数据库;即... 查看详情

无论安装的 Lync 客户端版本如何,都从 C# WPF 桌面应用程序启动 Lync 对话

】无论安装的Lync客户端版本如何,都从C#WPF桌面应用程序启动Lync对话【英文标题】:StartingLyncconversationfromC#WPFdesktopappregardlessofLyncclientversioninstalled【发布时间】:2016-07-0409:02:33【问题描述】:我是Lync集成和开发的新手。我正在... 查看详情

聊聊pc端自动化最佳方案-pywinauto(代码片段)

...化最佳方案-WinAppDriver有小伙伴后台给我留言,说「 pywinauto」作为WinAppD 查看详情

pywinauto - 动态控制总是列在 print_control_identifiers()

】pywinauto-动态控制总是列在print_control_identifiers()【英文标题】:pywinauto-dynamiccontrolalwayslistedinprint_control_identifiers()【发布时间】:2020-10-2909:21:20【问题描述】:我正在尝试自动化连接和断开Internet的程序。因此,在一个窗口中,... 查看详情

mysql服务怎么让开机自动启动

1、打开计算机管理。在桌面我的电脑上,点击右键,选择管理功能。2、打开服务。点击服务和应用程序,在程序的右侧,点击服务;或者展开服务和应用程序,找到服务,点击展开服务。3、找到需要关闭的服务。这里需要关闭... 查看详情

如何离线安装python模块?比如windows下ui自动测试模块pywinauto

...不到独立安装包。先安装python2.7后,上pypi.python.org下载了pywinauto-0.5.4.zip,解压后,运行setup.py,报告Noez_setup.py,又搜了一下网上下载了个ez_setup.py,运行时候又提示urllib2.URLError:<urlopenerror[SSL:CERTIFICATE_VERIFY_FAILED]certificateverifyfai... 查看详情

为 iOS 和 Android 自动安装应用程序?

...一个应用程序。例如,这个工具(https://ninite.com/pro)可以为桌面/Windows执行类似的功能,iOS/Android可以执行类似的功能吗?用例是这样的- 查看详情

什么是javawebstart软件以及如何启动它

...art软件启动应用程序通过浏览器单击Web页中的链接。通过桌面图标如果您经常使用某一应用程序,则可以在桌面上或“开始”菜单中创建该应用程序的快捷方式。JavaWebStart会询问您是否想在“开始”菜单中创建快捷方式或条目。... 查看详情

怎样让linux启动后不运行桌面而是运行自己写的图形界面程序?

就是像启动桌面一样启动自己写的应用程序,但是桌面不要了,只显示我的程序换句话说,就是我想把一个普通的linux版本修改成一个专用的linux,比如一个手持设备,这样再启动的时候就不希望看到桌面啦之类的东西,而是直接进入到... 查看详情