pywinauto找到一个确切的托盘项目

时间:2015-09-01 19:53:36

标签: python pywinauto

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

我已经尝试了当前文档中的所有内容,并且还尝试了Web上的Volume示例,但没有成功。

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

我现在正在使用Windows 7 Pro x64,但我需要在8,8.1和10上运行(因为我认为支持它仍然落后,所以我可以降低10个)

1 个答案:

答案 0 :(得分:0)

如果您使用pywinauto 0.5.1,请拨打taskbar.SystemTrayIcons.Texts(),然后将相应的文字复制到以下电话:

taskbar.ClickSystemTrayIcon('button text', exact=True, double=True)

对于隐藏区域使用ClickHiddenSystemTrayIcon(...)

另请注意,弹出菜单属于您的申请流程。因此,您需要连接到该应用并致电app.PopupMenu.MenuItem('item name').Click()ClickInput()

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

编辑:

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

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