を使用してファイルをアップロードおよびダウンロードする方法 Selenium

Seleniumでファイルをアップロードする

WebDriver でのファイルのアップロードは、ファイル選択入力フィールドで sendKeys() メソッドを使用して、アップロードするファイルへのパスを入力するだけで行われます。

このチュートリアルでは、ファイルのアップロードとダウンロードを処理する方法を学びます。

ファイルをアップロードする方法 Selenium

このセクションでは、 https://demo.guru99.com/test/upload/ テストアプリケーションとして。 このサイトでは、訪問者はサインアップせずにファイルを簡単にアップロードできます。

ファイルをアップロード Selenium
ファイルアップロードポップアップの処理 Selenium ウェブドライバー

ファイル「C:\newhtml.html」をアップロードするとします。 WebDriver コードは以下のようになります。

package newproject;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
public class PG9 {
    public static void main(String[] args) {
        System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe");
        String baseUrl = "https://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();
        }
}

このスクリプトを実行すると、ファイルを正常にアップロードできるようになり、次のようなメッセージが表示されるはずです。

ファイルをアップロード Selenium

WebDriverでファイルをアップロードするときは、次の2つの点に注意してください。

  1. 「参照」ボタンのクリックをシミュレートする必要はありません。WebDriverは、ファイルパスをファイル選択テキストボックスに自動的に入力します。要素
  2. ファイルパスを設定するときは Java IDE では、バックスラッシュに適切なエスケープ文字を使用します。

ファイルをアップロード Selenium

ファイルをダウンロードする方法 Selenium ウェブドライバー

WebDriverにはダウンロードダイアログボックスにアクセスする機能がありません ダウンロード リンクまたはボタンをクリックすると、ブラウザによってダイアログ ボックスが表示されます。ただし、「wget」と呼ばれる別のプログラムを使用すると、これらのダイアログ ボックスをバイパスできます。

ウィゲットとは何ですか?

Wget は、ダウンロードを自動化するために使用される小さくて使いやすいコマンドライン プログラムです。。 基本的に、WebDriver スクリプトから Wget にアクセスしてダウンロード プロセスを実行します。

Wget のセットアップ

ステップ1) C ドライブに新しいフォルダーを作成し、「Wget」という名前を付けます。

wget.exeをダウンロード ここから 上記の手順で作成した Wget フォルダーに配置します。

Wget のセットアップ

ステップ2) Windowsキー+「R」を押して実行を開き、「cmd」と入力してOKをクリックします。

Wget のセットアップ

コマンド「cd /」を入力してルートディレクトリに移動します

Wget のセットアップ

ステップ3) コマンドを入力して、指定された設定が機能しているかどうかを確認します

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

Wget のセットアップ

Cドライブへの書き込みに問題があるようです。

ステップ4) コードを実行する前に、コマンドラインで wget エラーをデバッグする必要があります。 Selenium ウェブドライバー。これらのエラーは次の期間に持続します Eclipse また、エラー メッセージはあまり有益ではありません。まずコマンドラインを使用して wget を動作させるのが最善です。コマンドラインで動作する場合は間違いなく動作します Eclipse.

この例では、ステップ 3 に示すように、C ドライブへの書き込みに問題があります。 ダウンロード場所をDドライブに変更して結果を確認してみましょう。

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

Wget のセットアップ

Messenger 正常にダウンロードされました。

次に進む前に、ダウンロードしたファイルを削除することを忘れないでください

WebDriver と Wget の使用

次の例では、WebDriverとwgetを使用して、Yahooという人気のチャットソフトウェアをダウンロードします。 MessengerベースURLは https://demo.guru99.com/test/yahoo.html.

WebDriver と Wget の使用

ステップ1) 後でステップ 4 で IOException をキャッチする必要があるため、「java.io.IOException」パッケージをインポートします。

WebDriver と Wget の使用

ステップ2) getAttribute() を使用してダウンロード リンクの「href」値を取得し、それを文字列変数として保存します。 この場合、変数に「sourceLocation」という名前を付けました。

WebDriver と Wget の使用

ステップ3) 次のコマンドを使用して、wget の構文を設定します。

WebDriver と Wget の使用

ステップ4) WebDriver コードから wget を呼び出して、ダウンロード プロセスを開始します。

WebDriver と Wget の使用

まとめると、WebDriver コードは以下のようになります。

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.gecko.driver","C:\\geckodriver.exe");
                String baseUrl = "https://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();
        }
        
}

このコードを実行した後、DドライブをチェックしてYahoo! Messenger インストーラーが正常にダウンロードされました。

WebDriver と Wget の使用

製品概要

  • WebDriver でのファイルのアップロードは、ファイル選択入力フィールドで sendKeys() メソッドを使用して、アップロードするファイルへのパスを入力するだけで行われます。
  • WebDriver だけではファイルのダウンロードを自動化できません。
  • WebDriver を使用してファイルをダウンロードする最も簡単な方法は、Wget を使用することです。