pywinauto: There is no active desktop required for moving mouse cursor!
Управление программой происходит на удалённом сервере, доступ к которому осуществляется по RDP. Оказалось, что когда к серверу подключение по RDP есть, то всё работает нормально, но если его нет, то в различных местах программы возникает RuntimeError по причине: There is no active desktop required for moving mouse cursor! Как это можно исправить?
Ответы (1 шт):
Есть несколько вариантов, все описаны в Remote Execution Guide.
Настроить RDP так, чтобы он при минимизации или отключении оставлял активный десктоп (первые две ссылки в гайде ссылаются на документацию Test Complete).
Пользоваться только VNC вместо RDP (если заюзать RDP хоть раз, то придётся ребутать удалённый сервер). Этот способ не требует знать номер RDP сессии, но может понадобиться установить новый видео драйвер на удалённом сервере, т.к. VNC передаёт реальный десктоп, а не виртуальный как RDP.
Не использовать методы
.type_keys(),.click_input()и производные от них. Они требуют активный десктоп, поскольку делают настоящий клик мышью (клац буквой). Но тихие методы, такие как.click(),.send_chars(),.send_keystrokes(), работают не всегда, и это очень зависит от приложения. Это самый трудный путь, хотя и достаточно надёжный в случае удачи.
P.S. Ну, и есть нюанс, если использовать какой-нибудь Jenkins, то агент на удалённом сервере нельзя запускать как сервис. Сервисы не имеют доступа к GUI.