selenium测试(Java)--下载文件(十六)

下载文件需要在Firefox 的profile属性中配置一些参数,如下面的代码:

package com.test.download;

import java.io.File;

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

public class DownloadTest {

    public static void main(String[] args) {

        FirefoxProfile profile = new FirefoxProfile();

        // 可以在Firefox浏览器地址栏中输入about:config来查看属性
        // 设置下载文件放置路径,注意如果是windows环境一定要用\,用/不行
        String path = "D:\10-selenium\workspace\SeleniumTest\src\com\test\download\down";
        String downloadFilePath = path + "\d.exe";
        File file = new File(downloadFilePath);
        if (file.exists()) {
            file.delete();
        }

        // 配置响应下载参数
        profile.setPreference("browser.download.dir", path);// 下载路径
        profile.setPreference("browser.download.folderList", 2);// 2为保存在指定路径,0代表默认路径
        profile.setPreference("browser.download.manager.showWhenStarting", false);// 是否显示开始
        // 禁止弹出保存框,value是文件格式,如zip文件
        profile.setPreference("browser.helperApps.neverAsk.saveToDisk",
                "application/zip,text/plain,application/vnd.ms-excel,text/csv,text/comma-separated-values,application/octet-stream,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.openxmlformats-officedocument.wordprocessingml.document");
//关于类型:可以参考http://www.w3school.com.cn/media/media_mimeref.asp

        WebDriver driver = new FirefoxDriver(profile);
        driver.get("file:///D:/10-selenium/workspace/SeleniumTest/src/com/test/download/download.html");
        driver.manage().window().maximize();

        driver.findElement(By.linkText("下载")).click();

        waitTime(3000);
        String js_exist = "alert("download successfully")";
        String js_not_exist = "alert("download unsuccessfully")";

        if (file.exists()) {
            ((JavascriptExecutor) driver).executeScript(js_exist);
        } else {
            ((JavascriptExecutor) driver).executeScript(js_not_exist);
        }

        waitTime(5000);
        // driver.quit();

    }

    static public void waitTime(int time) {

        try {
            Thread.sleep(time);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

使用到的页面例子:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>download</title>
</head>
<body>
<a href="d.exe">下载</a>
</body>
</html>

测试代码结构:

原文地址:https://www.cnblogs.com/xinxin1994/p/7289581.html