2012-05-29 58 views
1

我在Selenium 2.21.0中使用Java 6.我如何使用Selenium WebDriver API在網頁上下載文件?也就是說,有一個鏈接導致Excel文件的下載啓動。我想知道如何啓動下載,確定何時完成,然後找出文件下載到本地系統的位置。如何使用Java Selenium WebDriver下載文件?

+0

[這](http://sqa.stackexchange.com/questions/2197/how-do-i-download-a-file-using-seleniums-webdriver)可能幫幫我。 –

回答

0

一旦你點擊任何鏈接下載文件,它取決於瀏覽器的行爲,如 Chrome行爲:一旦用戶點擊任何文件的鏈接,它將默認開始下載文件。 IE行爲:IE在窗口底部顯示一個欄並顯示選項以保存或取消文件下載。 FireFox行爲:這將顯示一個對話框窗口並顯示選項以保存或取消文件下載。 所以這可以通過FireFox Profile來實現。 在下載任何文件之前,您必須將文件的MIME類型傳遞給FireFox配置文件。 一些常用的MIME類型有: 文本文件(.txt) - 純文本/ PDF文件(.PDF) - 應用程序/ PDF CSV文件(.csv) - 文本/ CSV MS Excel文件(。 XLSX) - 應用/ vnd.openxmlformats-officedocument.spreadsheetml.sheet MS字文件(.DOCX) - 應用/ vnd.openxmlformats-officedocument.wordprocessingml.document

這裏是代碼:

import org.openqa.selenium.By; 
    import org.openqa.selenium.firefox.FirefoxDriver; 
    import org.openqa.selenium.firefox.FirefoxProfile; 

    public class DownloadFiles { 

    public static void main(String[] args) throws InterruptedException { 
    //Create FireFox Profile object 
    FirefoxProfile p = new FirefoxProfile(); 

    //Set Location to store files after downloading. 
    profile.setPreference("browser.download.folderList", 2); 

    //Set preference not to file confirmation dialogue 
    profile.setPreference("browser.helperApps.neverAsk.saveToDisk", 
     "application/vnd.openxmlformats- 
     officedocument.spreadsheetml.sheet"); 

    // Specify the local system path where to download 
    p.setPreference("browser.download.dir", "D:\\downloads"); 
    // Pass Profile parameters in Firefox browser 
    FirefoxDriver driver = new FirefoxDriver(profile); 

    // Open APP to download application 
    driver.get("http://url"); 

    // Click to download 
    driver.findElement(By.xpath("//html[@attribute='value']")).click(); 

    Thread.sleep(5000); 

    driver.close(); 

希望它能解決您的疑問。快樂的編碼。

0

我特別關注Firefox瀏覽器,當訪問者點擊任何下載鏈接時,您可以使用下載選項附帶的彈出選項。它顯示了兩個按鈕和兩個單選按鈕,可以讓我們直接保存並打開文件,而無需事後下載,如果我們發現該文件很有用,我們可以通過Firefox瀏覽器上述工具欄上的下載圖標明確下載。 所以,你可以執行以下步驟

1)點擊下載鏈接

WebDriver driver = new FirefoxDriver(); 

driver.findElement(By.linkText(「somelink」)).click(); 

上面的代碼可以幫助webdriver的識別對象並執行其中提到

2)的作用點擊下載鏈接後,Firefox瀏覽器將彈出一個下載對話框,其中包含多個選項 Like Save單選按鈕,打開單選按鈕,ok按鈕,取消按鈕以便使用此 您可以使用Robot類或Keys WebDriver 像

Robot r = new Robot(); 


r.KeyPress(KeyEvent.VK_TAB); 

你可以使用盡可能多的時間在上面的代碼按Tab鍵

r.KeyRelease(KeyEvent.VK_TAB); 

你必須放開按鍵

最後執行進入

r.KeyPress(KeyEvent.VK_ENTER); 

就是這樣它會幫助你在下載鏈接被壓制時下載對象使用sed

希望它會幫助你

相關問題