2017-08-14 75 views
0

我有一個需要在ChromeDriver中下載音頻文件的項目。此處的行爲與常規Chrome不同,如果我訪問該網址,它會自動開始下載文件。如果我在ChromeDriver中手動執行相同的操作,它將不會下載該文件。使用ChromeDriver下載文件

我已經嘗試了鉻選項/偏好的不同配置。我也發現了舊版Chrome的選項,不再工作。

這裏是更好的資源,我發現之一,但它仍然沒有工作,甚至與他們更新的博客文章 https://dkage.wordpress.com/2012/03/10/mid-air-trick-make-selenium-download-files/

當我試圖使用他的解決辦法,我突然chromedriver崩潰本身在非鍍鉻方式。它只是消失。不是像您通常所期望的那樣出現「出錯」頁面。我最終與Java無法找到我的會話,導致它停止存在。

有沒有人成功通過Chrome中的Selenium webdriver下載文件?如果我需要使用其他瀏覽器,我可以。

我目前使用Chrome Canary。

+0

所以你正在''下載文件通過自動Chrome瀏覽器中的Selenium webdriver?你能分享一個示例網站和你的研究嗎? – DebanjanB

+0

我正在嘗試下載音頻文件並執行語音識別。後半部分正在工作。我遇到的問題是在頁面被訪問時下載文件。當我回家時,我可以提供一個鏈接 – Kristoff

+0

通過普通的I/O來下載文件不是更好嗎? –

回答

0

我有同樣的問題。一種可行的解決方案是使用另一個庫,它可以在瀏覽器之外運行。我發現這些計算器後discussiong這個問題:

https://sqa.stackexchange.com/questions/2197/how-to-download-a-file-using-seleniums-webdriver

它包含了我這篇文章至極給你一些sugestions。 https://blog.codecentric.de/en/2010/07/file-downloads-with-selenium-mission-impossible/

  1. 窗口自動化

第一種方法聞起來像「蠻力」:搜索網的解決問題的時候,你很容易落得建議,以控制本機帶有一些像AutoIt這樣的窗口自動化軟件。意味着您必須準備AutoIt,以便它等待任何瀏覽器下載對話框,Selenium放棄的位置,控制窗口,保存文件以及關閉窗口。之後,硒可以像往常一樣繼續。

這可能最終會奏效,但我發現它是一種技術性的矯枉過正。事實證明,這個問題有一個更簡單的解決方案。

  • 更改的瀏覽器的默認行爲
  • 第二種可能性是改變瀏覽器的默認行爲。例如,當點擊一個PDF文件時,瀏覽器不應該打開一個對話框,並詢問用戶如何處理該文件,而是將它保存在一個沒有意見和問題的預定義目錄中。爲此,必須手動啓動文件下載,並將其保存到磁盤並從現在開始將其標記爲這些文件類型的默認行爲。

    嗯,那可以工作。您「只」必須確保所有開發人員,哈德森實例等共享相同的瀏覽器配置文件。根據不同文件類型的數量,這可能是一些手動工作。

  • 直接下載
  • 退一步說,爲什麼我們要下載與硒的文件擺在首位?在沒有Selenium的情況下下載文件,而是使用wget下載會不會更酷?你會在你走的時候解決第二個問題。看起來好主意,因爲wget不僅適用於Linux,而且適用於Windows。

    問題解決了嗎?不太清楚:那些不能自由訪問的文件呢?什麼,當我第一次需要用Selenium創建一個狀態來訪問生成的文件?該解決方案似乎可以用於公共文件,但不適用於所有情況。

    +0

    爲了通過瀏覽器手動完成,我需要檢查元素,並從代碼中獲取音頻文件的URL位置。 我可以選擇在瀏覽器中播放音頻,並錄製它,但這似乎是我考慮過度的解決方案 – Kristoff