标签: pywinauto

如何获取每个打开窗口的名称列表?

如何获取所有打开的窗口的名称/文本列表?

我试过pywinauto:

pywinauto.findwindows.find_windows(title_re="*")*用作正则表达式会引发错误

我试过 win32gui:它有

win32gui.GetWindowText(win32gui.GetForegroundWindow())

但在它的文档中,我找不到 getAllWindows 或返回打开 hwnd 句柄的所有名称/文本的内容:http ://timgolden.me.uk/pywin32-docs/contents.html

python win32gui pywinauto

14
推荐指数
3
解决办法
2万
查看次数

pytest - Windows 致命异常:代码 0x8001010d

我正在尝试使用 pytest 和 pywinauto 运行 GUI 测试。当我正常运行代码时,它不会抱怨。

但是,当我通过 pytest 执行此操作时,它会引发一堆错误:

Windows fatal exception: code 0x8001010d
Run Code Online (Sandbox Code Playgroud)

请注意,代码仍然可以正常执行,并且案例被标记为通过。只是输出被这些奇怪的 Windows 异常污染了。

这是什么原因。我应该担心吗?

Windows fatal exception: code 0x8001010d
Run Code Online (Sandbox Code Playgroud)

python pywinauto pytest

14
推荐指数
2
解决办法
2319
查看次数

无法在 Windows 10 上导入 pywinauto

我安装pywinauto使用pip install pywinauto.

操作系统:Windows 10

蟒蛇:3.6.2

当我运行python并尝试 import 时pywinauto,出现错误:

Python 3.6.2 (v3.6.2:5fd33b5, Jul  8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from pywinauto.application import Application
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\John\AppData\Roaming\Python\Python36\site-packages\pywinauto\__init__.py", line 89, in <module>
    from . import findwindows
  File "C:\Users\John\AppData\Roaming\Python\Python36\site-packages\pywinauto\findwindows.py", line 42, in <module>
    from . import controls
  File "C:\Users\John\AppData\Roaming\Python\Python36\site-packages\pywinauto\controls\__init__.py", line 36, …
Run Code Online (Sandbox Code Playgroud)

python pywinauto python-3.x

12
推荐指数
1
解决办法
3896
查看次数

PyWinAuto还有用吗?

我今天一直在玩PyWinAuto并享受自动化各种GUI测试的乐趣.我想知道它是否仍然是最先进的,或者是否有其他东西(也是免费的)可以更好地实现Windows富客户端自动化.

python pywinauto

9
推荐指数
2
解决办法
5278
查看次数

pywinauto 等待窗口出现并发送按键

我正在尝试制作一个小功能,它会等到某个窗口出现,然后发送按键(alt+i),我一直在尝试使用 pywinauto 执行此操作,但没有成功。从我可以使用的文档中读到的内容

pywinauto.application.WindowSpecification.Exists()
Run Code Online (Sandbox Code Playgroud)

但我就是不明白如何指定我要查找的内容,我可以使用窗口标题或进程名称,但找不到好的解释。

另外,除了 pywinauto 之外,还有没有更简单的模块可以使用?我不需要做复杂的自动化,只需等待一个窗口并发送一些密钥。

编辑

好的,我找到了一个解决方案,一个永远循环的简单函数

 def auto_accept(*args):
    while True:
        try:
            app = pywinauto.Application()
            app.window_(title='Untitled - Notepad').SetFocus()
            app.window_(title='Untitled - Notepad').TypeKeys("{1}{2}{3}")
        except (pywinauto.findwindows.WindowNotFoundError, pywinauto.timings.TimeoutError):
            pass
Run Code Online (Sandbox Code Playgroud)

但现在我总是收到类似“2015-07-13 12:18:02,887 INFO: Typed text to the Notepad: {1}{2}{3}”这样的警告,我无法使用警告模块将它们过滤掉,还有另一种过滤\禁用它们的方法吗?这是一个问题,因为当我使用 py2exe 创建 exe 时,程序关闭后它告诉我有错误,但唯一的错误是我从 sendkeys 收到的警告。

python pywinauto

7
推荐指数
1
解决办法
2万
查看次数

Python - 在窗口最小化或隐藏时使用pywinauto控制窗口

我正在做的事情:

我正在尝试使用pywinauto在python中创建脚本以在后台自动安装notepad ++(隐藏或最小化),notepad ++只是一个示例,因为我将编辑它以与其他软件一起使用.

问题:

问题是我想在隐藏或最小化安装程序时执行此操作,但如果我移动鼠标,脚本将停止工作.

题:

如何隐藏或最小化notepad ++安装程序,如何执行此脚本并使其正常工作.

到目前为止这是我的代码:

import sys, os, pywinauto

pwa_app = pywinauto.application.Application()

app = pywinauto.Application().Start(r'npp.6.8.3.Installer.exe')

Wizard = app['Installer Language']

Wizard.NextButton.Click()

Wizard = app['Notepad++ v6.8.3 Setup']

Wizard.Wait('visible')

Wizard['Welcome to the Notepad++ v6.8.3 Setup'].Wait('ready')
Wizard.NextButton.Click()

Wizard['License Agreement'].Wait('ready')
Wizard['I &Agree'].Click()

Wizard['Choose Install Location'].Wait('ready')
Wizard.Button2.Click()

Wizard['Choose Components'].Wait('ready')
Wizard.Button2.Click()

Wizard['Create Shortcut on Desktop'].Wait('enabled').CheckByClick()
Wizard.Install.Click()

Wizard['Completing the Notepad++ v6.8.3 Setup'].Wait('ready', timeout=30)
Wizard['CheckBox'].Wait('enabled').Click()
Wizard.Finish.Click()
Wizard.WaitNot('visible')
Run Code Online (Sandbox Code Playgroud)

python automation ui-automation pywinauto

7
推荐指数
1
解决办法
8677
查看次数

Pywinauto - 无法使用UIA后端连接到office文档

我最近遇到了一个不寻常的问题,当我打开一些excel/word文档并尝试连接到它的进程时使用 -

app = pywinauto.Application(backend="uia").connect(process=19812)
Run Code Online (Sandbox Code Playgroud)

它似乎不起作用,这意味着app.is_process_running()返回False,top_window()方法引发RuntimeError(找不到该进程的窗口)异常.

但是,如果我运行实际的可执行程序(Winword.exe或Excel.exe而不是某些*.xls文件),它似乎工作正常,一切似乎工作正常.

我在文件上检查了UIA与inspect.exe的兼容性,一切似乎都没问题.

这可能是什么问题?

python pywinauto

7
推荐指数
1
解决办法
344
查看次数

Pywinauto - 有 2 个元素符合条件

这是我的第一篇文章!我想问你我该如何解决这个问题。我正在尝试在 powerBI 中自动发布。我需要单击正确的工作区。现在我正在尝试“我的工作区”,它只存在一次。 请检查此 PowerBI 窗口图像

这是inspect.exe 的屏幕

部分Python代码如下所示:

win = app.window(title_re = '.*Power BI Desktop')
win.Publish.click_input()
publish_dialog = win.child_window(auto_id = "KoPublishToGroupDialog")
publish_dialog.child_window(title = "My Workspace").click_input()
publish_dialog.Select.click()
Run Code Online (Sandbox Code Playgroud)

错误消息看起来像这样

There are 2 elements that match the criteria {'title': 'My workspace', 'top_level_only': False, 'parent': <uia_element_info.UIAElementInfo - 'Publish to Power BI', WindowsForms10.Window.20008.app.0.3c73ab4_r6_ad1, 667196>, 'backend': 'uia'}
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下问题是什么以及如何解决这个问题吗?

来自inspect.exe的附加信息

非常感谢

python pywinauto powerbi inspect.exe

7
推荐指数
1
解决办法
1万
查看次数

如何使用 pywinauto 右键单击​​文件夹并从上下文菜单中选择?

我正在为云同步桌面应用程序编写自动化测试。我面临的问题是,我无法从窗口中选择子文件夹,并且右键单击文件夹时无法从上下文菜单中选择选项。

例子:

import pywinauto

pywinauto.Application().Start(r'explorer.exe')
explorer = pywinauto.Application().Connect(path='explorer.exe')
NewWindow = explorer.Window_(top_level_only=True, active_only=True, class_name='CabinetWClass')
NewWindow.AddressBandRoot.ClickInput()
NewWindow.TypeKeys(r'Program Files{ENTER}', with_spaces=True, set_foreground=False)
ProgramFiles = explorer.Window_(top_level_only=True, active_only=True, title='Program Files', class_name='CabinetWClass')
explorer.WaitCPUUsageLower(threshold=5)
item = ProgramFiles.FolderView.GetItem('7-Zip')
item.EnsureVisible()
item.RightClickInput()
Run Code Online (Sandbox Code Playgroud)

回复:

    item = ProgramFiles.FolderView.GetItem('7-Zip')
  File "C:\Python27\lib\site-packages\pywinauto\application.py", line 243, in __getattr__
    ctrls = _resolve_control(self.criteria)
  File "C:\Python27\lib\site-packages\pywinauto\application.py", line 758, in _resolve_control
    raise e.original_exception
pywinauto.findbestmatch.MatchError: Could not find 'FolderView' in '[u'', u'ShellView', u'ShellViewSHELLDLL_DefView', 'Progress', u'UIRibbonCommandBar', u'24', u'25', u'20', u'21', u'22', u'23', u'WorkerW', u'0', u'ScrollBar', u'4', u'8', 'TreeView', u'DirectUIHWND', u'Address band toolbarToolbar', u'SHELLDLL_DefView', …
Run Code Online (Sandbox Code Playgroud)

python automation pywinauto

6
推荐指数
1
解决办法
1万
查看次数

与excel中的按钮/宏自动交互

我正在尝试找到一种方法来创建一个python脚本,找到excel文档中的所有按钮/复选框,并随机地与它们进行交互.

我尝试过使用pywinauto,但它没有在文档中找到实际的对象(可能是因为它是一个vb对象,而不是常规的GUI).

如何使用python完成?或许还有另一种方法可以做到这一点?

这是一个例如excel的文件

谢谢.

python excel pywinauto

6
推荐指数
1
解决办法
506
查看次数