2016-02-19 2 views
3

Я использую RSelenium для перехода к веб-странице, содержащей кнопку для загрузки файла. Я использую RSelenium, чтобы щелкнуть эту кнопку, которая загружает файл. Тем не менее, файлы по умолчанию загружаются в папку «downloads», тогда как я хочу, чтобы файл загружался в моем рабочем каталоге. Я попытался указать профиль хром, как показано ниже, но это, похоже, не делать эту работу:Укажите папку для загрузки в RSelenium

wd <- getwd() 
cprof <- getChromeProfile(wd, "Profile 1") 
remDr <- remoteDriver(browserName= "chrome", extraCapabilities = cprof) 

Файл еще загружены в папку «загрузки», а не мой рабочий каталог. Как это можно решить?

+1

Возможна попытка поиска методов перемещения файла из папки загрузки и в нужную папку. – Bharath

+0

Это уже решено в приведенной ниже ссылке [http://stackoverflow.com/questions/25251583/downloading-file-to-specified-location-with-selenium-and-python] – Bharath

+0

Этот вопрос касается Selenium в Python. Мой вопрос касается RSelenium как пакета в R. Я понимаю, что аргумент «browser.download.dir» может решить проблему, но документация, связанная с RSelenium, похоже, не поддерживает этот аспект ... – user3387899

ответ

2

Я пробовал альтернативы, и кажется, что первый комментарий @ Bharath о том, чтобы отказаться от возиться с prefs (это, похоже, не представляется возможным) и вместо этого перемещать файл из папки загрузки по умолчанию в желаемая папка - путь. Хитрость, чтобы сделать это портативное решение состоит в поиске, где каталог загрузки по умолчанию, конечно it varies by os (which you can get like so) -и вам нужно to find the user's username тоже:

desired_dir <- "~/Desktop/cool_downloads" 
file_name <- "whatever_I_downloaded.zip" 

# build path to chrome's default download directory 
if (Sys.info()[["sysname"]]=="Linux") { 
    default_dir <- file.path("home", Sys.info()[["user"]], "Downloads") 
} else { 
    default_dir <- file.path("", "Users", Sys.info()[["user"]], "Downloads") 
} 

# move the file to the desired directory 
file.rename(file.path(default_dir, file_name), file.path(desired_dir, file_name)) 
+1

Это можно сделать, установив соответствующие chromeOptions, см. Пример – jdharrison

3

решение включает установку соответствующих chromeOptions, изложенных в https://sites.google.com/a/chromium.org/chromedriver/capabilities. Ниже приведен пример окна окна 10:

library(RSelenium) 
eCaps <- list(
    chromeOptions = 
    list(prefs = list(
     "profile.default_content_settings.popups" = 0L, 
     "download.prompt_for_download" = FALSE, 
     "download.default_directory" = "C:/temp/chromeDL" 
    ) 
    ) 
) 
rD <- rsDriver(extraCapabilities = eCaps) 
remDr <- rD$client 
remDr$navigate("http://www.colorado.edu/conflict/peace/download/") 
firstzip <- remDr$findElement("xpath", "//a[contains(@href, 'zip')]") 
firstzip$clickElement() 
> list.files("C:/temp/chromeDL") 
[1] "peace.zip" 
+0

Это изменяет каталог загрузки при запуске; есть ли способ изменить его после того, как хром начал использовать код? @jdharrison – xiaodai

Смежные вопросы