Метод SendKeys AutoIT, сценарий оболочки или библиотека pywinauto не работает

Сценарий: я хочу обрабатывать всплывающие окна IE в среде роботов с помощью python. Для обработки всплывающих окон я использовал AutoIT SendKeys, сценарий оболочки, pywinauto TypeKeys. Код работает правильно при запуске на локальном компьютере, но когда я запускаю сценарий через командный город на машине агента, происходит сбой. Мое наблюдение заключается в том, что на машине агента код не работает для обработки всплывающих окон.

После анализа я обнаружил, что это связано с тем, что машина агента работает как заблокированная система во время запуска скрипта через город команды.

Код:

def fhandle_savepopup(self):

    shell = win32com.client.Dispatch("WScript.Shell")
    seleniumLib = BuiltIn().get_library_instance('Selenium2Library')
    shell.AppActivate ("Internet Explorer")
    sleep(2)
    autolib = BuiltIn().get_library_instance('AutoItLibrary')
    shell.SendKeys('{F6}')
    sleep(3)
    shell.SendKeys('{TAB}')
    sleep(3)
    shell.SendKeys('{ENTER}')

Я также использовал AutoIT и pywinauto lib. Но не повезло.

Пожалуйста, помогите мне найти решение для этого.


person Pallavi    schedule 10.03.2016    source источник


Ответы (1)


Вам необходимо держать рабочий стол открытым и не заблокированным (это можно решить, настроив автоматический вход в систему + сессия VNC, как TightVNC). Для TightVNC также может потребоваться обновление драйверов видеокарты и установка пользовательского разрешения (например, в панели управления NVIDIA). Конечно, этот узел должен быть подключен к главному узлу Team City с этого открытого рабочего стола (не в качестве службы).

Другой вариант — молча щелкать кнопки окна (без эмуляции реального пользовательского ввода). В pywinauto это можно сделать с помощью Click() (ClickInput() более реалистичен и не будет работать для заблокированной системы):

app.Window_(title="Popup title").Wait('visible', timeout=10)
app.Window_(title="Popup title").OK.Click()

P.S. TypeKeys() также работает как реальный пользовательский ввод. У нас есть планы реализовать тихую версию (SendChars) с использованием WM_CHAR оконных сообщений, которые могут подойти вам. Но версия pywinauto 0.6.0 в настоящее время находится в глубоком рефакторинге. Так что он может быть выпущен в апреле или даже в мае, но с отличной поддержкой WPF.

person Vasily Ryabov    schedule 13.03.2016