Python pywinauto查找准确的托盘项目

Python pywinauto查找准确的托盘项目,python,pywinauto,Python,Pywinauto,我正在尝试为桌面应用程序创建一个自动化GUI测试框架,为此我使用pywinauto。 我的问题是,即使使用SWAPY和Winspector,我仍然无法检测托盘区域并在那里找到我的应用程序 我尝试了当前文档中的所有内容,也尝试了web上的批量示例,但都没有成功 from pywinauto import taskbar sti = taskbar.SystemTrayIcons.WrapperObject() print 'Clicking ', sti.Button(0).info.text

我正在尝试为桌面应用程序创建一个自动化GUI测试框架,为此我使用pywinauto。 我的问题是,即使使用SWAPY和Winspector,我仍然无法检测托盘区域并在那里找到我的应用程序

我尝试了当前文档中的所有内容,也尝试了web上的批量示例,但都没有成功

from pywinauto import taskbar

sti = taskbar.SystemTrayIcons.WrapperObject()

print 'Clicking ', sti.Button(0).info.text
sti.Button(0).Click()
从技术上讲,我唯一需要的是找到托盘图标的确切位置,然后单击它以打开菜单

pywinauto有一些与任务栏相关的功能,但我无法让它们工作

有谁能告诉我怎么做吗

编辑

我尝试了你的想法,但我得到了这个错误:

import pywinauto
from pywinauto import taskbar

app = pywinauto.application.Application()
app.start_('C:\Program Files (x86)\MyApp.exe')
w_handle = pywinauto.findwindows.find_windows(title=u'MyApp')[0]
window = app.window_(handle=w_handle)

texts = taskbar.SystemTrayIcons.Texts()
print texts
追溯:

Traceback (most recent call last):
  File "C:/Users/nicolae.farcas/Desktop/pywinauto_c1.py", line 9, in <module>
    texts = taskbar.SystemTrayIcons.Texts()
  File "C:\Python27\lib\site-packages\pywinauto\controls\common_controls.py", line 1932, in Texts
    btn_text = self.GetButton(i).text
  File "C:\Python27\lib\site-packages\pywinauto\controls\common_controls.py", line 1914, in GetButton
    button.idCommand)
RuntimeError: GetButtonInfo failed for button with command id 0
回溯(最近一次呼叫最后一次):
文件“C:/Users/nicolae.farcas/Desktop/pywinauto_c1.py”,第9行,在
text=taskbar.SystemTrayIcons.text()
文件“C:\Python27\lib\site packages\pywinauto\controls\common\u controls.py”,第1932行,文本
btn_text=self.GetButton(i).text
文件“C:\Python27\lib\site packages\pywinauto\controls\common_controls.py”,第1914行,在GetButton中
按钮(IDC命令)
运行时错误:命令id为0的按钮的GetButtonInfo失败

我现在正在使用Windows 7 Pro x64,但我需要它也在8、8.1和10上运行(我可以放弃10,因为我想象对它的支持仍然落后)

如果您使用pywinauto 0.5.1,请调用
taskbar.SystemTrayIcons.text()
,然后将相应的文本复制到以下调用中:

taskbar.ClickSystemTrayIcon('button text', exact=True, double=True)
对于隐藏区域,请使用
单击隐藏系统TrayIcon(…)

另外请注意,弹出菜单属于您的应用程序流程。因此,您需要连接到应用程序并调用
app.PopupMenu.MenuItem('item name')。单击()

如果不起作用,请提供错误输出和操作系统版本

编辑:

(关于Python 32/64位问题的评论)


理想的方法是在64位Python中运行特定于任务栏的代码,然后为单独的特定于应用程序的脚本启动32位Python。虽然不太方便,但应该可以使用。

如果您使用pywinauto 0.5.1,请调用任务栏.SystemTrayIcons.text()
,然后将相应的文本复制到以下调用:

taskbar.ClickSystemTrayIcon('button text', exact=True, double=True)
对于隐藏区域,请使用
单击隐藏系统TrayIcon(…)

另外请注意,弹出菜单属于您的应用程序流程。因此,您需要连接到应用程序并调用
app.PopupMenu.MenuItem('item name')。单击()

如果不起作用,请提供错误输出和操作系统版本

编辑:

(关于Python 32/64位问题的评论)


理想的方法是在64位Python中运行特定于任务栏的代码,然后为单独的特定于应用程序的脚本启动32位Python。它不太方便,但应该可以工作。

您在64位Python上使用pywinauto 0.5.1吗?不,我使用32位oneProcess
explorer.exe,其中包含64位操作系统上的64位任务栏。您需要64位Python。我将考虑任务栏模块中的警告。您是否在脚本输出中看到关于不正确位的警告?我有时会看到这样的警告:警告!无法检索句柄=198548的文本长度警告!无法检索句柄的文本长度=66940警告!无法检索handle=131878的文本长度是否在64位Python上使用pywinauto 0.5.1?否,我使用32位oneProcess
explorer.exe,其中包含64位操作系统上的64位任务栏。您需要64位Python。我将考虑任务栏模块中的警告。您是否在脚本输出中看到关于不正确位的警告?我有时会看到这样的警告:警告!无法检索句柄=198548的文本长度警告!无法检索句柄的文本长度=66940警告!当我进入command taskbar.SystemTrayIcons.text()获取->用户升级通知区域时,无法检索handle=131878的文本长度。此命令如何在任务栏上工作。单击SystemTrayIcon('按钮文本',精确=真,双精度=真)?Vasily Ryabov请看一看未测试的Win10。你好,Vasily,我可以打开我的应用程序,但使用命令任务栏。从系统托盘中单击SystemTrayIcon(“应用程序名称”),但我现在不知道如何与打开的窗口交互。任何建议??要获取pywinauto的基本概念,请先阅读。当我进入command taskbar.SystemTrayIcons.Text()时,我会获取->用户升级通知区域。此命令如何在任务栏上工作。单击SystemTrayIcon('按钮文本',精确=真,双精度=真)?Vasily Ryabov请看一看未测试的Win10。你好,Vasily,我可以打开我的应用程序,但使用命令任务栏。从系统托盘中单击SystemTrayIcon(“应用程序名称”),但我现在不知道如何与打开的窗口交互。任何建议??要获得pywinauto的基本概念,请先阅读。