Уведомления

Группа в Telegram: @pythonsu

#1 Июль 1, 2015 18:45:10

Tiberium
Зарегистрирован: 2015-06-28
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

pywinauto - GUI Automation

Но это консольное приложение на C#, там такой подход наверное не подойдёт..
Вот пример кода:

from pywinauto.application import Application
app = Application.start("notepad.exe")
app.UntitledNotepad.TypeKeys("Привет мир!")
(взят из документации)
Лог pywinauto:2015-07-01 18:44:28,054 INFO: Typed text to the Notepad: Привет мир!
Что в блокноте:@825B<8@!
UPD:Версия Python 3.4, Windows 7 сборка 7600 x64

Отредактировано Tiberium (Июль 1, 2015 18:47:48)

Офлайн

#2 Июль 14, 2015 23:11:41

vvryabov
Зарегистрирован: 2015-04-19
Сообщения: 13
Репутация: +  1  -
Профиль   Отправить e-mail  

pywinauto - GUI Automation

Но это консольное приложение на C#, там такой подход наверное не подойдёт.. Извини, но мы с коллегами поржали немного.

.

В версии 0.5.1 проблем с pip больше не должно быть. Примером для русского языка займусь попозже. Можешь глянуть в репозитории examples/test_sakura.py (на японском) и сделать по аналогии на русском. Ключевая строка - самая верхняя в шапке.

.

В августе займусь плотнее документацией.

Отредактировано vvryabov (Июль 14, 2015 23:12:08)

Офлайн

#3 Июль 17, 2015 01:05:03

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

pywinauto - GUI Automation

vvryabov
Коль вы мониторите тему здесь, то здесь и спрошу.
Посмотрите пожалуйста вот на эту запись моего блога. Если вам нравится этот функционал. м.б. я подготовлю для проекта pull-request ? Добавив функцию как метод класса Application ?



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Июль 17, 2015 11:49:46

vvryabov
Зарегистрирован: 2015-04-19
Сообщения: 13
Репутация: +  1  -
Профиль   Отправить e-mail  

pywinauto - GUI Automation

JOHN_16

Да, я видел эту запись раньше. Тут есть пара нюансов. Не хочется добавлять новую зависимость от psutil. Кроме того, в методе start_ есть in-place функция AppIdle(). Логичнее было бы на её основе сделать общедоступный метод WaitAppIdle(), добавив заодно параметр timeout.

.

Ещё один вопрос, сильно ли это отличается от вызова вроде app.Dialog.Wait('ready', timeout=300). На первый взгляд практически ничем. Надо только в доках всю эту методику подробней расписать.

.

А так любой полезный и обоснованный contribution мы приветствуем.

Отредактировано vvryabov (Июль 17, 2015 11:50:05)

Офлайн

#5 Сен. 9, 2015 14:31:09

vvryabov
Зарегистрирован: 2015-04-19
Сообщения: 13
Репутация: +  1  -
Профиль   Отправить e-mail  

pywinauto - GUI Automation

Вышел релиз 0.5.2 с методами класса Application: CPUUsage() и WaitCPUUsageLower(). Появилось 2 новых примера на install/uninstall вот здесь: https://gist.github.com/vasily-v-ryabov

Офлайн

#6 Май 27, 2017 01:26:46

algoriatchev
Зарегистрирован: 2017-05-27
Сообщения: 4
Репутация: +  1  -
Профиль   Отправить e-mail  

pywinauto - GUI Automation

Я использую Python3/pywinauto/и сама апликуха - все 64. вылетает ошибка на строке

tree_item = systreeview.GetItem()

Не подскажите как решить или подскажите место , где можно узнать отвт. На 32 апликухе все летало.
Спасибо

log: File “C:\Python36\lib\site-packages\pywinauto\controls\common_controls.py”, line 1523, in get_item texts = File “C:\Python36\lib\site-packages\pywinauto\controls\common_controls.py”, line 1523, in texts = File “C:\Python36\lib\site-packages\pywinauto\controls\common_controls.py”, line 960, in text return self._readitem() File “C:\Python36\lib\site-packages\pywinauto\controls\common_controls.py”, line 1383, in _readitem remote_mem) ctypes.ArgumentError: argument 4: : int too long to convert

Офлайн

#7 Май 29, 2017 23:45:36

vvryabov
Зарегистрирован: 2015-04-19
Сообщения: 13
Репутация: +  1  -
Профиль   Отправить e-mail  

pywinauto - GUI Automation

Ошибка интересная. Эта функциональность хорошо тестируется автоматически, в том числе на 64-битных приложениях и Python 3.6. Пока не пробовал воспроизвести, т.к. очень занят. Но если есть возможность приватно расшарить аппликуху (готов подписать NDA, если нужно), то можно высылать на gmail почту (в нике на гитхабе заменить чёрточки на точки). Так, возможно, будет быстрее воспроизвести.

P.S. Ну, и для всех напомню, что pywinauto 0.6.2, вышедший в феврале, поддерживает еще и MS UI Automation (backend='uia' при создании Application), а это гораздо более широкий спектр приложений. Пока отсылаю к Getting Started Guide в доках на сайте. Статья на Хабр готовится.

Офлайн

#8 Май 30, 2017 12:16:35

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

pywinauto - GUI Automation

А часом там не 32 разрядный питон под 64 разрядной виндой?!



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#9 Май 30, 2017 20:51:38

algoriatchev
Зарегистрирован: 2017-05-27
Сообщения: 4
Репутация: +  1  -
Профиль   Отправить e-mail  

pywinauto - GUI Automation

Сорри за молчание, у нас выходной был. Дать доступ хотел бы , но не могу.

//А часом там не 32 разрядный питон под 64 разрядной виндой?!//
Нет, все 64. Даже менял 2,7 на 3,6 и обратно (все 64). Все бежит хорошо, пока не касается treeview.

Update. Лечится строкой
win32functions.SendMessage.argtypes = квадратные скобки HWND, UINT, WPARAM, ctypes.c_void_p квадратные скобки
vvryabov, куда ее вставить?

Отредактировано algoriatchev (Май 30, 2017 22:10:08)

Офлайн

#10 Май 30, 2017 22:51:05

vvryabov
Зарегистрирован: 2015-04-19
Сообщения: 13
Репутация: +  1  -
Профиль   Отправить e-mail  

pywinauto - GUI Automation

А, понятно. Это из-за того, что во многих местах мы перешли на аналогичную функцию из pyWin32 расширений, но где-то остался вызов через ctypes. Можно прямо в win32functions.py вставить (повлияет на все подобные вызовы в лучшую сторону... надеюсь) и посмотреть, сойдутся ли тесты на AppVeyor (pull request автоматически тестится). Как раз есть шанс фиксу попасть в готовящийся 0.6.3. По мелочи там много выгребли нестабильностей и неточностей, в том числе в win32 бэкенде. Кстати, если не лень будет проверить текущий мастер бранч на большом проекте, это была бы полезная инфа. Хоть покрытие тестами и около 95% держим, corner cases всё равно периодически вылезают.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version