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

1.簡介

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

2.去掉下載彈窗的優點

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

3.Chrome自動化下載文件

3.1參數說明

相比較Firefox來講,Chrome的下載默認不會彈出下載窗口的,咱們主要是想修改一下Chrome默認的下載路徑。
Chrome的設置看上去要比Firefox複雜一次,不過,你須要關注兩個設置。

Chrome瀏覽器類似,設置其options:

download.default_directory:設置下載路徑
profile.default_content_settings.popups:設置為 0 禁止彈出窗口

3.2程式碼設計

3.3參考程式碼

package lessons;

import org.openqa.selenium.By; 
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.chrome.ChromeOptions; 
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.remote.CapabilityType; 
import org.openqa.selenium.remote.DesiredCapabilities; 

import java.util.HashMap; 

/**
 * @author 北京-宏哥
 * 
 * @公眾號:北京宏哥
 * 
 * @《手把手教你》系列技巧篇(五十六)-java+ selenium自動化測試-下載文件-上篇(詳細教程)
 *
 * @2021年12月19日
 */
public class ChromeDownload {
    
    public static void main(String[] args) throws InterruptedException { 
        String downloadFilepath = "D:\\test2"; 
        HashMap<String, Object> chromePrefs = new HashMap<String, Object>(); 
        chromePrefs.put("profile.default_content_settings.popups", 0); 
        chromePrefs.put("download.default_directory", downloadFilepath); 
        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); 
        WebDriver driver = new ChromeDriver(cap); 
        driver.manage().window().maximize();
        driver.get("//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')]"));
        Actions action = new Actions(driver);
        myElement.click();//點擊下載
        Thread.sleep(10000);
        System.out.println("browser will be close");
        driver.quit();    
    } 

}

3.4運行程式碼

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

2.運行程式碼後電腦端的瀏覽器的動作,如下小影片所示:

4.小結

本來下一篇打算介紹和講解IE瀏覽器的,但是查了大量資料也嘗試了各種方法(包括網上說的鍵盤模擬和autoIT)都不能成功,因此就沒有寫關於IE瀏覽器的下載文件。如果有清楚的可以給宏哥留言哈!!!不過有兩個瀏覽器的方法了,夠用了。