2016-03-10 6 views
0

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

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

Код:

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 тоже. Но не повезло.

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

ответ

0

Вам необходимо оставить свой рабочий стол открытым и незаблокированным (его можно решить с помощью setting auto-logon up + 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.