2015-07-28 73 views
1

我想使用硒下載PDF格式的鉻。如何使用硒webdriver在鉻下載PDF文件

System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") 
       + System.getProperty("file.separator") 
       + "BrowserDrivers" 
       + System.getProperty("file.separator") 
       + "chromedriver.exe"); 

String downloadFilepath = "C:\\Users\\Vinod\\Downloads"; 

HashMap<String, Object> chromePrefs = new HashMap<String, Object>(); 
chromePrefs.put("profile.default_content_settings.popups", 0); 
chromePrefs.put("download.default_directory", downloadFilepath); 

//Save Chrome Opions 
ChromeOptions options = new ChromeOptions(); 
HashMap<String, Object> chromeOptionsMap = new HashMap<String, Object>(); 
options.setExperimentalOption("prefs", chromePrefs); 
options.addArguments("--test-type"); 


DesiredCapabilities cap = DesiredCapabilities.chrome(); 
cap.setCapability(ChromeOptions.CAPABILITY, chromeOptionsMap); 
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); 
cap.setCapability(ChromeOptions.CAPABILITY, options); 


driver = new ChromeDriver(cap); 
driver.get(url); 

我想上面的代碼,但您使用Adobe Acrobat/Adob​​e Reader軟件顯示PDF文件它不工作

+1

爲什麼它不工作?哪裏有問題?也許有些調試器使用?或某些函數調用的錯誤狀態?你爲了解決問題而嘗試過什麼? –

+0

其實當我點擊一個按鈕時,pdf應該自動下載,在以前的瀏覽器版本中它可以正常工作。我的瀏覽器進行了更新和PDF是開放的,而不是僅通過禁用PDF閱讀器,但更新瀏覽器我越來越即使插件處於禁用狀態問題後下載 –

回答

0

?如果是這樣,那麼您可能需要修改Abode的行爲。

這裏是我不得不採取的步驟:

  1. 打開Adobe Reader時
  2. 編輯菜單,首
  3. Selcet互聯網從類別列表中的瀏覽器
  4. 取消選中顯示PDF
  5. 新聞確定

您還可以禁用A Chrome中的dobe插件,這將強制Chrome下載PDF。

它在chrome://插件下。

但正如您所說的最新的Chrome瀏覽器,然後檢查是否在插件中顯示Chrome瀏覽器視圖,如果是禁用它。

  • 禁用 「Chrome PDF查看器」 或取消總是允許運行復選框嘗試兩種

enter image description here

+0

以前我那樣做了。第二件事是,如果我不喜歡在adobe中檢查pdf瀏覽器,我可能會得到在IE –

+0

概率,然後你可以做到這一點,當有史以來硒代碼運行它應該禁用所有擴展只需通過您的硒代碼嘗試此鏈接http://stackoverflow.com/questions/14049151/how-to-disable-chrome-extension-in-selenium – fahad

+0

你可以試試這個使用機器人類並按ctrl + S來保存pdf,然後點擊從機器人輸入,將PDF保存在硬盤?試試這個 – fahad

0

你需要下面的語句添加到您的Chrome個人資料:

chromePrefs.put("pdfjs.disabled", true); 

看來,瀏覽器的新版本正在內置在瀏覽器中顯示PDF文件的能力。有關更多信息,請參閱this,雖然它是針對Firefox的配置文件,但仍然是一個很好的閱讀。

希望能夠解決您的問題,否則您可能需要降級您的Chrome以使其正常工作。如果您有任何疑問,請告訴我。

+0

對於Firefox我使用相同的代碼即ff配置文件。我與該命令也試過,但沒有使用 –

2

由於chrome 57的自動pdf預覽不再作爲一個插件使用,現在有一個設置可以改變,使這項工作。您可以通過檢查chrome自己的首選項對話框來檢查pref的名稱,在「內容設置」下標記爲「在默認PDF查看器應用程序中打開PDF文件」。 automatic pdf open pref

您可以設置爲false,以避免自動PDF預覽,像這樣(紅寶石爲例):

caps = Selenium::WebDriver::Remote::Capabilities.chrome(
     "chromeOptions" => {   
      'args' => ['disable-gpu', "--window-size=1920,1080"], 
      prefs: { 
       "download.prompt_for_download": false, 
       "download.directory_upgrade": true, 
       "plugins.always_open_pdf_externally": true, 
       "download.default_directory": DownloadHelpers::PATH.to_s 
      } 
     } 
    ) 
Capybara::Selenium::Driver.new(
     app, 
     browser: :chrome, 
     desired_capabilities: caps 
    ) 
+0

這在Ruby的工作非常適合我。謝謝@rogercampos一百萬! – westonplatter

1

你可能會加載這個頁面,並使用硒導航更改設置:

chrome://settings/content/pdfDocuments