如何使用Java Selenium WebDriver下载文件?

时间:2012-05-29 14:45:23

标签: java selenium webdriver

我正在使用Selenium 2.21.0和Java 6.如何使用Selenium WebDriver API在网页上下载文件?也就是说,有一个链接导致下载Excel文件。我想知道如何启动下载,确定它何时完成,然后找出文件下载到我本地系统的位置。

2 个答案:

答案 0 :(得分:0)

点击任何链接下载文件后,它取决于浏览器的行为 Chrome行为:只要用户点击任意文件的链接,它就会默认开始下载文件。 IE行为:IE在窗口底部显示一个栏,并显示保存或取消文件下载选项。 FireFox行为:这将显示一个对话框窗口,并显示保存或取消文件下载的选项。 所以这可以在FireFox Profile的帮助下实现。 在下载任何文件之前,您必须将文件的MIME类型传递给FireFox配置文件。 一些常用的MIME类型是: 文本文件(.txt) - text / plain PDF文件(.pdf) - application / pdf CSV文件(.csv) - text / csv MS Excel文件(.xlsx) - application / vnd.openxmlformats-officedocument.spreadsheetml.sheet MS word文件(.docx) - application / 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();

希望它能解决您的疑问。快乐的编码。

答案 1 :(得分:0)

我特别关注Firefox浏览器,当访问者点击任何下载链接时,您可以使用下载选项附带弹出选项。它显示了两个按钮和两个单选按钮,它们为我们提供了保存和直接打开文件的选项,如果我们发现该文件很有用,我们可以通过Firefox浏览器上面的工具栏上的下载图标直接下载它。 所以你可以执行以下步骤

1)点击下载链接

WebDriver driver = new FirefoxDriver();

driver.findElement(By.linkText(“somelink”)).click();

上面的代码可以帮助WebDriver识别对象并执行上面提到的操作

2)点击下载链接后,firefox浏览器会弹出一个包含多个选项的下载对话框 喜欢保存单选按钮,打开单选按钮,确定按钮,取消按钮以便使用它 您可以使用Robot类或WebDriver中的Keys 像

Robot r = new Robot();


r.KeyPress(KeyEvent.VK_TAB); 

您可以使用上述代码按照标签按钮

的时间
r.KeyRelease(KeyEvent.VK_TAB);

你必须释放按下的键

最后执行回车

r.KeyPress(KeyEvent.VK_ENTER);

这就是它可以帮助您在下载链接时下载对象

希望它能帮到你