使用pywinauto从TreeView中选择子项

时间:2016-06-29 10:29:26

标签: python python-2.7 pywinauto

我遇到的问题与the GetItem()的{​​{1}}方法有关。我能够在Windows 7和10上运行pywinauto命令,这两个命令都是32位但它会抛出一个exeption,并且在从Windows 10 64位的python命令行调用它时不会运行。

这是我使用的完整代码:

window.TreeView.GetItem('\\Desktop').Click()

这些是我收到的错误:

import pywinauto

pwa_app = pywinauto.application.Application()

w_handle = pywinauto.findwindows.find_windows(title=u'Browse For Folder', class_name='#32770')[0]

window = pwa_app.window_(handle=w_handle)

window.TreeView.GetItem('\\Desktop').Click()

Folder Dialog content

我必须提到我只能通过Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python27\lib\site-packages\pywinauto\controls\common_controls.py", line 1374, in GetItem texts = [r.Text() for r in roots] File "C:\Python27\lib\site-packages\pywinauto\controls\common_controls.py", line 872, in Text return self._readitem() File "C:\Python27\lib\site-packages\pywinauto\controls\common_controls.py", line 1263, in _readitem raise ctypes.WinError() WindowsError: [Error 0] The operation completed successfully.

访问树视图的根目录

2 个答案:

答案 0 :(得分:1)

这是因为Windows消息的Win32 API结构大小对于32位和64位应用程序而言是不同的。它已在UIA分支机构中修复(您可以在今年夏天等待0.6.0)。

另一种方法是在你的64位Python之外设置32位Python(和pywinauto)(你只需要关心python.exe的完整路径)。

答案 1 :(得分:0)

尝试这个...

import pywinauto
from pywinauto import Desktop, Application
import pywinauto
app = Application(backend="uia").connect(best_match='File Explorer')
dlg = app.File_Explorer

dlg = dlg.ItemsView.get_item('Documents')
dlg.click_input(double = True)