作為現有 selenium 測驗包作業的一部分,我被要求洗掉 Firefox 的實體,以下載服務器生成的 PDF 檔案 - 一個身份驗證問題導致代理配置會話錯誤,使檔案無法被下載。
當檔案在服務器中生成時,可以通過一個包含 UUID 的 URL 來訪問它。這個 URL 被傳遞到一個新的 Firefox 實體中,該檔案可以被下載。
這個硒包是10年前按照軟體開發的最佳實踐拋出來的,不。雖然它可以作業,但在大多數情況下,其性能相當差。
我可以通過服務 URL 以及作為路徑一部分的 UUID 來訪問服務器上生成的檔案,因為這是檔案生成程序的一部分。在當前的作業流程中,有一個 "生成檔案 "按鈕,由正在運行的資料包點擊。
一旦該檔案被生成,我需要將其下載到一個特定的檔案夾中,并對其進行重命名,以證明該程序已經完成,并令人滿意。
我搜索了很多,并找到了幾篇文章,讓我了解了問題的部分內容,但無法拼湊出一個可行的解決方案。
我可以在無頭模式下啟動 chrome 驅動程式,但還沒有弄清楚如何下載檔案。由于瀏覽器視窗顯示的是檔案本身,因此頁面上沒有可點擊的下載按鈕。
誰能給我指出一個解決方案?
謝謝您的幫助。
預先感謝,
uj5u.com熱心網友回復:
目前在chrome中打開pdf時,我們可以看到下載選項,但通過selenium我們不能對該下載按鈕執行任何操作。在這里,我們的目標是將pdf下載到所需的位置,所以我們需要在啟動驅動程式之前disable pdf插件。請看下面的代碼,
ChromeOptions options = new ChromeOptions();
HashMap<String, Object> chromeOptionsMap = new HashMap<String, Object> ()。
chromeOptionsMap.put("plugins.plugins_disabled", new String[] { "Chrome PDF Viewer" }) 。
chromeOptionsMap.put("plugins.always_open_pdf_externally", true)。
chromeOptionsMap.put("download.default_directory", "C:UsersDownloads est") 。
options.setExperimentalOption("prefs", chromeOptionsMap)。
options.addArguments("-headless")。
訪問PDF:
driver = new ChromeDriver(options)。
driver.manage().deleteAllCookies()。
driver.get("C:UsersDownloadsBill.pdf") 。
解釋:
。plugins.plugins_disabled --> 禁止在chrome中查看 plugins.always_open_pdf_externally --> 在啟動相關鏈接或 download.default_directory --> 可以改變默認的下載位置。 uj5u.com熱心網友回復: https://www.lambdatest.com/blog/how-to-download-upload-files-using-selenium-with-java/
標籤:pdf。
URI時下載pdf。
