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

巨集哥發表於2022-01-13

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("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')]"));
        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瀏覽器的下載檔案。如果有清楚的可以給巨集哥留言哈!!!不過有兩個瀏覽器的方法了,夠用了。

相關文章