AutoIt и RSelenium для навигации по диалогу «Сохранить как» (Firefox)

Я уже несколько дней (если не недель ...) пытаюсь заставить приведенный ниже код работать. Я пытаюсь добиться того, чтобы сценарий R запускался ежедневно (через пакетный сценарий и планировщик задач Windows на 64-разрядной версии Windows Server 2008). Этот сценарий R должен переходить к определенным веб-сайтам, входить в систему и вызывать диалог «Сохранить как» для сохранения полных страниц по определенному пути.

Если я запускаю свой скрипт на своей машине (Win 8 - 64bit) в RStudio, он работает как чудо - удаленно, а через Rscript.exe - нет.

Проблема, похоже, связана со сценарием SaveAs.au3 - когда я вызываю его через RStudio или из файлового проводника, он отлично работает. Тот же сценарий R, выполняемый в пакетном файле с:

"C:\Program Files\R\R-3.2.3\bin\x64\Rscript.exe" "C:\JN\abc.R"

работает до тех пор, пока не будет выполнена команда system (), а затем выйдет из строя, не выдав никаких ошибок или предупреждений.

Может есть у кого была подобная проблема и может помочь? Спасибо!

Вот три скрипта AutoIt:

SaveAs.au3 / exe

ControlFocus("[CLASS:MozillaWindowClass]", "", "")
ControlSend("[CLASS:MozillaWindowClass]", "", "", "^s")

EditName.au3 будет по-разному записываться из R и затем вызываться

KeyEnter.aut3

ControlFocus("Save as", "", "")
ControlClick("Save as","","[CLASS:Button; INSTANCE:1]")

Скрипт R выглядит следующим образом:

# compl is a vector of n href 

if(length(compl) != 0) {
  foreach(i=1:length(compl)) %do% {
    server_check() # checks whether selenium driver is still active and firefox window is open
    remDr$navigate(compl[i])
    Sys.sleep(10)
    login_check() # checks whether login is still active
    Sys.sleep(5)
    print(paste("attempt to save:",compl[i]))
    system('C:\\JN\\SaveAs.exe') # does not matter whether .exe or .au3
    Sys.sleep(3)
    system("cmd", input = c('echo ControlSetText("Save as", "", "[CLASS:Edit; INSTANCE:1]", "") > C:\\JN\\EditName.au3',
                            paste0('echo ControlSend("Save as", "", "[CLASS:Edit; INSTANCE:1]", "',
                                   gsub("/","_",gsub(website_url,"", compl[i])), ".htm",
                                   '") >> C:\\JN\\EditName.au3')))
    Sys.sleep(3)
    system('C:\\"Program Files (x86)"\\AutoIt3\\AutoIt3.exe C:\\JN\\EditName.au3')
    Sys.sleep(8)
    system('C:\\"Program Files (x86)"\\AutoIt3\\AutoIt3.exe C:\\JN\\KeyEnter.au3')
    Sys.sleep(30)
  }
}
print("Complete save end")

person JNWHH    schedule 18.03.2016    source источник


Ответы (1)


Проблема была связана с Windows Server 2008 R2 - если вы отключитесь от удаленного сеанса, сервер запустит экранный сервер (или что-то подобное), из-за чего сценарий AutoIt не сможет взаимодействовать с графическим интерфейсом (поскольку нет ...)

В Windows Server есть параметры, чтобы сервер не отключал графический интерфейс, но мой сценарий все еще был недостаточно стабильным, чтобы работать самостоятельно в течение нескольких месяцев ...

person JNWHH    schedule 01.04.2016