Загрузка и загрузка файла из браузера с помощью автоматизированного процесса - PullRequest
1 голос
/ 03 апреля 2019

У меня есть скрипт, который использует RSelenium для автоматизации загрузки файла Excel. Я пытаюсь сделать следующее: предположим, что это автоматизировано и выполняется ежедневно на сервере. Как мне загрузить его и загрузить обратно в R?

library(rvest) 
library(RSelenium)

remDr <- remoteDriver(port=4444L)
remDr$open()
remDr$navigate("http://abc.xyz.com/Login.aspx?ReturnUrl=%2fOrdersAndDelivery%2fOrderStatus.aspx")
username <- remDr$findElement(using = "name", value = "ctl00$MainContent$Login1$UserName")
username$sendKeysToElement(list("xxx"))

password <- remDr$findElement(using = "name", value = "ctl00$MainContent$Login1$Password")
password$sendKeysToElement(list("xxx"))

login <- remDr$findElement(using = "name",value = "ctl00$MainContent$Login1$LoginButton")
login$clickElement()

format_status <- remDr$findElement(using = 'xpath', "//*/option[@value = 'Excel']")
format_status$clickElement()

submit <- remDr$findElement(using = "id",value = "SubmitButton")
submit$clickElement()

Эта последняя submit$clickElement() - это кнопка, которая выглядит следующим образом:

enter image description here

Затем он начинает обрабатываться, прежде чем это всплывет:

enter image description here

В то же время в папке «Загрузки» появляется новый файл, который выглядит следующим образом: q5vu64p4.xlsx.part

Я не знаю, почему он загружается как xlsx.part, тем более знаю, что означает .part. Хотя я могу прекрасно открыть файл через Excel, автоматизировать его было бы сложно, потому что имя этого файла каждый раз разное. Один раз это было mkTjuSd2.xlsx.part, а в другой раз это было kZ8+dKF0.xlsx, поэтому нет последовательности.

Как правильно загрузить файл в автоматическом режиме?

1 Ответ

0 голосов
/ 04 апреля 2019

Это немного обходной путь, но вы можете определить имя файла, проверив каталог на наличие файлов, которые были добавлены за последние x секунд.Таким образом вы можете определить имя файла.

fileNames <- list.files()
index <- which(Sys.time() - file.info(fileNames)$mtime < 1)
fileNames[index]

Пример:

write.csv(1, file = "test2.csv")
fileNames <- list.files()
index <- which(Sys.time() - file.info(fileNames)$mtime < 1)
fileNames[index]
...