码迷,mamicode.com
首页 > 编程语言 > 详细

[Selenium+Java] How to Upload & Download a File using Selenium Webdriver

时间:2018-05-22 18:30:15      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:base   exe   except   attribute   check   dialog   member   int   misc   

Original source: https://www.guru99.com/upload-download-file-selenium-webdriver.html

 

Uploading Files

For this section, we will use http://demo.guru99.com/test/upload/ as our test application. This site easily allows any visitor to upload files without requiring them to sign up.

Uploading files in WebDriver is done by simply using the sendKeys() method on the file-select input field to enter the path to the file to be uploaded.

技术分享图片

Let‘s say we wish to upload the file "C:\newhtml.html". Our WebDriver code should be like the one shown below.

package newproject;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
public class PG9 {
    public static void main(String[] args) {
        System.setProperty("webdriver.firefox.marionette","C:\\geckodriver.exe");
        String baseUrl = "http://demo.guru99.com/test/upload/";
        WebDriver driver = new FirefoxDriver();

        driver.get(baseUrl);
        WebElement uploadElement = driver.findElement(By.id("uploadfile_0"));

        // enter the file path onto the file-selection input field
        uploadElement.sendKeys("C:\\newhtml.html");

        // check the "I accept the terms of service" check box
        driver.findElement(By.id("terms")).click();

        // click the "UploadFile" button
        driver.findElement(By.name("send")).click();
        }
}

After running this script, you should be able to upload the file successfully and you should get a message similar to this.

技术分享图片

Remember following two things when uploading files in WebDriver

  1. There is no need to simulate the clicking of the "Browse" button. WebDriver automatically enters the file path onto the file-selection text box of the <input type="file"> element
  2. When setting the file path in your Java IDE, use the proper escape character for the back-slash.

技术分享图片

Downloading Files

WebDriver has no capability to access the Download dialog boxes presented by browsers when you click on a download link or button. However, we can bypass these dialog boxes using a separate program called "wget".

What is Wget?

Wget is a small and easy-to-use command-line program used to automate downloads. Basically, we will access Wget from our WebDriver script to perform the download process.

Setting up Wget

Step 1: In your C Drive, create a new folder and name it as "Wget".

Download wget.exe from here and Place it in the Wget folder you created from the step above.

技术分享图片

Step 2: Open Run by pressing windows key + "R" ; type in "cmd & click ok

技术分享图片

Type in the command "cd /" to move to the root directory

技术分享图片

Step 3: Type in the command to check whether the given setup is working

cmd /c C:\\Wget\\wget.exe -P C: --no-check-certificate http://demo.guru99.com/selenium/msgr11us.exe

技术分享图片

There seems to be an issue writing into C drive.

Step 4: You need to debug the wget errors in command line before you execute the code using Selenium Webdriver. These errors will persist in Eclipse and the error messages will not be as informative. Best to first get wget working using command line. If it works in command line it will definitely work in Eclipse.

In our example, as show in step 3, there is a problem writing into C drive. Let‘s change the download location to D drive and check results.

cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate http://demo.guru99.com/selenium/msgr11us.exe

技术分享图片

Messenger was downloaded successfully.

Before you proceed further don‘t forget to delete the downloaded file

Using WebDriver and Wget

In the following example, we will use WebDriver and wget to download a popular chat software called Yahoo Messenger. Our base URL shall be http://demo.guru99.com/test/yahoo.html.

技术分享图片

Step 1

Import the "java.io.IOException" package because we will have to catch an IOException later in Step 4.

技术分享图片

Step 2

Use getAttribute() to obtain the "href" value of the download link and save it as a String variable. In this case, we named the variable as "sourceLocation".

技术分享图片

Step 3

Set-up the syntax for wget using the following command.

技术分享图片

Step 4

Initiate the download process by calling wget from our WebDriver code.

技术分享图片

To sum it all up, your WebDriver code could look like the one shown below.

package newproject;
import java.io.IOException;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
public class PG8 {
    public static void main(String[] args) {
        
        System.setProperty("webdriver.firefox.marionette","C:\\geckodriver.exe");
                String baseUrl = "http://demo.guru99.com/test/yahoo.html";
        WebDriver driver = new FirefoxDriver();

        driver.get(baseUrl);
        WebElement downloadButton = driver.findElement(By
        .id("messenger-download"));
        String sourceLocation = downloadButton.getAttribute("href");
        String wget_command = "cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate " + sourceLocation;

        try {
        Process exec = Runtime.getRuntime().exec(wget_command);
        int exitVal = exec.waitFor();
        System.out.println("Exit value: " + exitVal);
        } catch (InterruptedException | IOException ex) {
        System.out.println(ex.toString());
        }
        driver.close();
        }
        
}

After executing this code, check your D drive and verify that the Yahoo Messenger installer was successfully downloaded there.

技术分享图片

 

Summary

  • Uploading files in WebDriver is done by simply using the sendKeys() method on the file-select input field to enter the path to the file to be uploaded.
  • WebDriver cannot automate downloading of files on its own.
  • The easiest way to download files using WebDriver is to use Wget.

[Selenium+Java] How to Upload & Download a File using Selenium Webdriver

标签:base   exe   except   attribute   check   dialog   member   int   misc   

原文地址:https://www.cnblogs.com/alicegu2009/p/9073079.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!