Utorrent Automation с использованием Pywinauto
Я пытаюсь автоматизировать Utorrent с помощью Pywinauto lib. Я хочу добавить торрент с URL. Эта опция находится в меню файла. Я могу добраться до открытия uTorrent, и тогда ничего не происходит. Я использовал Swapy для генерации этого кода. Поле ниже открывается только тогда, когда я запускаю код в swapy. Но когда я сохраняю его в файл и запускаю с помощью cmd, открывается только utorrent, и в cmd происходит трассировка.
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, и я не эксперт. Было бы полезно, если бы вы предоставили объяснение, чтобы решить мою проблему или код. Спасибо!!
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()
Битность важна. 32-битный uTorrent падает, если я использую 64-битный Python.