2017-06-21 2 views
1

私は特定のWebサイトからExcelファイル(.xls)をダウンロードしようとしています。私は以下の私の全体のRコードを貼り付けています(ドッカーコンテナを設定した後)。docker経由でRSeleniumを使用しているときにxlsファイルをダウンロードできない

ePrefs = makeFirefoxProfile(
list(
browser.download.dir = "/home/seluser/Downloads", 
"browser.download.folderList" = 2L, 
"browser.download.manager.showWhenStarting" = FALSE, 
"browser.helperApps.neverAsk.saveToDisk" = "application/vnd.ms-excel, 
    application/xls, application/x-xls, application/vnd-xls, 
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" 
)) 

    remDr = remoteDriver(extraCapabilities = ePrefs, port = 4445) 
    remDr$open() 
    remDr$navigate("https://www.aeaweb.org/joe/listings?") 

    webelem1 = remDr$findElement(using = 'id', "published-date") 
    webelem1$clickElement() 

    webelem2 = remDr$findElement("css", "[value = 'week']") 
    webelem2$clickElement() 

    webelem3 = remDr$findElement("css", "[value = 'Apply Filter']") 
    webelem3$clickElement() 
    Sys.sleep(10) 

    webelem4 = remDr$findElement("css", "[feature = 'download']") 
    webelem4$clickElement() 

webelem5 = remDr$findElement("xpath", 
"/html/body/main/div/section/div/div[2]/div[2]/div/ul/li[3]/a") 
webelem5$clickElement() 

すべてが正常に動作しますが、私は、ファイルを保存するか、それを開きたい場合は、最後のステップ(クリック)でセレンブラウザは、まだ私はオーバーライドコマンドを持っているにもかかわらず、私を求めて通常のダイアログウィンドウが開きますコードのeprefsビット。

最後にクリックしたファイルを手動でダウンロードし、コンテンツタイプが application/vnd.ms-excelであることを確認しました。私が間違っていることはありますか?どんな助けもありがとうございます。

+0

? https://stackoverflow.com/questions/42293193/rselenium-on-docker-where-are-files-downloadedとhttps://stackoverflow.com/questions/42607389/download-file-with-rselenium-docker-toolboxを参照してください。 – jdharrison

答えて

0

サーバーが返すMIMEタイプはapplication/force-downloadです。あなたのリストにこれを追加し、私のためにホストとコンテナのダウンロードマップされている場所と、次の作品を観察:あなたはHOSTと容器との間のダウンロード先をマップしなかったあなたのドッキングウィンドウコンテナを開始し

# initiate docker container mapping download locations 
# here HOST is linux 
# docker run -d -p 4445:4444 -p 5901:5900 -v /home/john/test:/home/seluser/Downloads selenium/standalone-firefox-debug:2.53.1 

library(RSelenium) 
ePrefs <- makeFirefoxProfile(
    list(
    browser.download.dir = "/home/seluser/Downloads", 
    "browser.download.folderList" = 2L, 
    "browser.download.manager.showWhenStarting" = FALSE, 
    "browser.helperApps.neverAsk.saveToDisk" = "application/vnd.ms-excel, 
    application/xls, application/x-xls, application/vnd-xls, 
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, 
    application/force-download" 
)) 

remDr <- remoteDriver(extraCapabilities = ePrefs, port = 4445) 
remDr$open() 
remDr$navigate("https://www.aeaweb.org/joe/listings?") 

webelem1 <- remDr$findElement(using = 'id', "published-date") 
webelem1$clickElement() 

webelem2 <- remDr$findElement("css", "[value = 'week']") 
webelem2$clickElement() 

webelem3 <- remDr$findElement("css", "[value = 'Apply Filter']") 
webelem3$clickElement() 
Sys.sleep(10) 

webelem4 <- remDr$findElement("css", "[feature = 'download']") 
webelem4$clickElement() 

webelem5 = remDr$findElement("xpath", 
          "/html/body/main/div/section/div/div[2]/div[2]/div/ul/li[3]/a") 
webelem5$clickElement() 

list.files("/home/john/test/") 

> list.files("/home/john/test/") 
[1] "joe_resultset.xls" 
関連する問題