1

我正在尝试使用 pywinauto lib 进行 utorrent 自动化。我想添加一个带有 URL 的种子。此选项位于文件菜单下。我可以打开 uTorrent,然后什么也没有发生。我使用 Swapy 生成此代码。只有当我在 swapy 中运行代码时,才会打开下面的框。但是当我将它保存到文件中并使用 cmd 运行时,只有 utorrent 会打开,并且 cmd 中会出现回溯。

我要输入 URL 的框,然后单击确定

from pywinauto.application import Application

app = Application().Start(cmd_line=u'"C:\\Users\\User\\AppData\\Roaming\\uTorrent\\u Torrent.exe" ')
torrentdfb = app[u'\xb5Torrent4823DF041B09']
torrentdfb.Wait('ready')
menu_item = torrentdfb.MenuItem(u'&File->Add Torrent from &URL...\tCtrl+U')
menu_item.Click()

app.Kill_()

Traceback:
Traceback (most recent call last):
File "AddTorrent.py", line 5, in <module>
torrentdfb.Wait('ready')
File "C:\Python27\lib\site-packages\pywinauto\application.py", line 380, in Wait
WaitUntil(timeout, retry_interval, lambda: self.__check_all_conditions(check_method_names))
File "C:\Python27\lib\site-packages\pywinauto\timings.py", line 308, in WaitUntil
raise err
pywinauto.timings.TimeoutError: timed out

我是 python 编码的新手,我不是专家。如果您提供解释以解决我的问题或代码,将会很有帮助。谢谢!!

4

1 回答 1

1

uTorrent 正在生成另一个进程,这就是我得到它的方式:

>>> app.windows_()
[]
>>> app.process
6096
>>> app.connect(title_re=u'^μTorrent.*(build \d+).*')
<pywinauto.application.Application object at 0x000000000405C240>
>>> app.process
4044L

这是对我有用的最终代码(使用 32 位 uTorrent 和 32 位 Python 2.7):

import pywinauto

app = pywinauto.Application().start(r'uTorrent.exe')
time.sleep(5) # because method connect() has no timeout param yet (planned for 0.6.0)
app.connect(title_re=u'^\u03bcTorrent.*(build \d+).*')

main_window = app.window_(title_re=u'^\u03bcTorrent.*(build \d+).*')
main_window.MenuSelect(u'&File->Add Torrent from &URL...\tCtrl+U')

app.AddTorrentFromURL.Edit.SetText('some URL')
app.AddTorrentFromURL.OK.Click()

位很重要。如果我使用 64 位 Python,32 位 uTorrent 会崩溃。

于 2016-05-26T12:00:25.957 回答