《手把手教你》系列技巧篇(五十六)-java+ selenium自動化測試-下載文件-上篇(詳細教程)


1.簡介

前邊幾篇文章講解完如何上傳文件,既然有上傳,那么就可能會有下載文件。因此宏哥就接着講解和分享一下:自動化測試下載文件。可能有的小伙伴或者童鞋們會覺得這不是很簡單嗎,還用你介紹和講解啊,不說就是訪問到下載頁面,然后定位到要下載的文件的下載按鈕后,點擊按鈕就可以了。其實不是這樣的,且聽宏哥徐徐道來:宏哥這里的下載是去掉下載彈框的下載。

2.去掉下載彈窗的優點

(1)檢索鍵盤鼠標自動化控制模塊的導入
(2)可以無頭化運行,不影響同時進行的其他的任務

3.Firefox自動化下載文件

3.1參數說明

為了不彈出下載框需要對Firefox的一些參數進行設置:

browser.download.dir:指定下載路徑
browser.download.folderList:設置成 2 表示使用自定義下載路徑;設置成 0 表示下載到桌面;設置成 1 表示下載到默認路徑
browser.download.manager.showWhenStarting:在開始下載時是否顯示下載管理器
browser.helperApps.neverAsk.saveToDisk:對所給出文件類型不再彈出框進行詢問

3.2代碼設計

3.3參考代碼

package lessons;

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.firefox.FirefoxProfile; 
import org.openqa.selenium.By; 

/**
 * @author 北京-宏哥
 * 
 * @公眾號:北京宏哥
 * 
 * @《手把手教你》系列技巧篇(五十六)-java+ selenium自動化測試-下載文件-上篇(詳細教程)
 *
 * @2021年12月17日
 */
public class FirefoxDownload {
    
    public static void main(String[] args)throws InterruptedException { 
        System.setProperty("webdriver.gecko.driver", ".\\Tools\\geckodriver.exe");  
        FirefoxProfile profile = new FirefoxProfile(); 
        profile.setPreference("browser.download.folderList", 2); 
        profile.setPreference("browser.download.dir", "D:\\test2"); 
        profile.setPreference("browser.download.manager.showWhenStarting", false);
        profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream"); 
        FirefoxOptions firefoxOptions = new FirefoxOptions(); 
        firefoxOptions.setProfile(profile); 
         
        // 打開一個帶上門設置好profile的火狐瀏覽器
        WebDriver driver = new FirefoxDriver(firefoxOptions);
        //WebDriver driver =new FirefoxDriver(profile); 
        driver.manage().window().maximize();
        driver.get("https://pypi.org/project/selenium/#files");//到目標網頁      
        Thread.sleep(10000);
        WebElement myElement = driver.findElement(By.xpath("//a[contains(text(),'selenium-4.1.0-py3-none-any.whl')]"));
        myElement.click();//點擊下載
        Thread.sleep(10000);
        System.out.println("browser will be close");
        driver.quit();    
    } 

}

3.4運行代碼

1.運行代碼,右鍵Run AS->Java Appliance,控制台輸出,如下圖所示:

2.運行代碼后電腦端的瀏覽器的動作,如下小視頻所示:

4.小結

Firefox需要針對每種文件類型進行設置,對於不知道文件類型的可以用抓包軟件進行抓包,F12找到導致彈框的請求,查看該請求response的header,不出意外的話content-type應該就是你要的結果。具體查看文件類型的方法如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM