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

⚡ スマートサマリー

ファイルのアップロードとダウンロード Selenium WebDriverワークフローは、入力フィールドにネイティブのsendKeys()、ダイアログにAutoItまたはRobot、CDPコマンドに依存しています。 Selenium 4. 自動化実行中に安全なダウンロードパスを設定する。

  • 📤 アップロード方法: ファイル入力要素で sendKeys() を使用すると、[参照] をクリックせずに絶対ファイルパスを送信できます。
  • 📥 ダウンロードパス: ChromeOptions または CDP Page.setDownloadBehavior を使用してカスタムダウンロードディレクトリを設定します。 Selenium 4.
  • 🪟 ネイティブダイアログ: OSのファイルピッカーがWebDriverとのやり取りをブロックした場合に、AutoItスクリプトまたはjava.awt.Robotをトリガーします。
  • 🤖 AI 支援: 生成型AIは、セレクターを提案し、テストデータファイルを作成し、ダウンロードしたファイルの整合性を自動的に検証します。
  • 🛡️ 検証チェック: 応答メッセージでアップロードの成功を確認し、ファイルサイズまたはチェックサムの比較を使用してダウンロードを検証します。

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

WebDriver でファイルをアップロードするには、ファイル選択入力フィールドで sendKeys() メソッドを使用してアップロードするファイルのパスを入力するだけです。このチュートリアルでは、WebDriver を使用してファイルのアップロードとダウンロードを処理する方法を学びます。 Selenium ウェブドライバー。

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

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

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

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

パッケージ 新しいプロジェクト;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox です。Firefoxドライバ;
パブリッククラス PG9 {
パブリック静的空隙 主要(String[] args) {
System.setProperty(「webdriver.gecko.driver」,「C:\\geckodriver.exe」);
String baseUrl = 「https://demo.guru99.com/test/upload/」;
webdriver ドライバー = NEW Firefoxドライバ();

driver.get(baseUrl);
Web要素 uploadElement = driver.findElement(By.id(「uploadfile_0」));

// ファイル選択入力フィールドにファイルパスを入力してください
uploadElement.sendKeys(「C:\\newhtml.html」);

// 「利用規約に同意します」チェックボックスをオンにする
driver.findElement(By.id("条項"))。クリック();

// 「UploadFile」ボタンをクリックします
driver.findElement(By.name("送信"))。クリック();
}
}

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

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

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

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

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

AutoIt を使用した非入力アップロードダイアログの処理

ページがネイティブのボタンではなくカスタムの参照ボタンを使用している場合要素の場合、sendKeys() は機能しません。その場合は、AutoIt スクリプトを呼び出すことができます。 Selenium OSのダイアログにファイルパスを入力してEnterキーを押してください。

以下のスクリプトを名前を付けて保存します アップロード.au3コンパイルして アップロード.exeそこから呼び出します Java 「参照」ボタンをクリックした後。

; upload.au3 – ファイルを開くダイアログが表示されるまで待機し、ファイルパスを入力します。
WinWaitActive("開いた")
送信(「C:\newhtml.html」)
送信("{入力}")

Java参照ボタンをクリックした後にヘルパーをトリガーします。

driver.findElement(By.id(「browseBtn」))。クリック();
ランタイム.getRuntime().exec(「C:\\AutoIt\\upload.exe」);

java.awt.Robot クラスは純粋なJava AutoIt が利用できない場合の代替手段ですが、AutoIt の方が信頼性が高いです。 Windows タイトルによるダイアログを待機するためです。

ファイルをダウンロードする方法 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 -PC: –no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

Wget のセットアップ

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

ステップ4) コードを実行する前に、コマンドラインで wget のエラーをデバッグする必要があります。 Selenium WebDriver。これらのエラーは、 Eclipse エラーメッセージもあまり役に立たないでしょう。まずはコマンドラインを使ってwgetを動作させるのが最善です。コマンドラインで動作すれば、間違いなく Eclipse.

ステップ3で示したように、今回の例ではCドライブへの書き込みに問題が発生しています。ダウンロード先をDドライブに変更して、結果を確認してみましょう。

cmd /c C:\\Wget\\wget.exe -PD: –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 コードは以下のようになります。

パッケージ 新しいプロジェクト;
import java.io.IOException;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox です。Firefoxドライバ;
パブリッククラス PG8 {
パブリック静的空隙 主要(String[] args) {

System.setProperty(「webdriver.gecko.driver」,「C:\\geckodriver.exe」);
String baseUrl = 「https://demo.guru99.com/test/yahoo.html」;
webdriver ドライバー = NEW Firefoxドライバ();

driver.get(baseUrl);
Web要素 downloadButton = driver.findElement(By.id(「メッセンジャーのダウンロード」));
String sourceLocation = downloadButton.getAttribute(「href」);
String wget_command = 「cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate」 + ソースロケーション;

試します {
プロセス exec = Runtime.getRuntime().exec(wget_command);
int型 exitVal = exec.waitFor();
System.out.println(「出口価値:」 + exitVal);
} キャッチ (中断された例外 | IO例外 元) {
System.out.println(ex.toString());
}
driver.close();
}
}

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

WebDriver と Wget の使用

カスタムダウンロードパスを設定する Selenium 4 CDP

Selenium 4ではChrome DevToolsプロトコルが公開され、サードパーティツールを使用せずにブラウザのダウンロード動作を制御できるようになりました。以下のコードスニペットでは、すべてのダウンロード先をカスタムフォルダに指定し、「名前を付けて保存」プロンプトをスキップすることで、テストで想定される場所にファイルを保存します。

クロムドライバー ドライバー = NEW ChromeDriver();
地図<String,オブジェクト> パラメータ = NEW HashMap<>();
params.put("行動", "許可する");
params.put(「ダウンロードパス」, 「D:\\selenium-downloads」);
driver.executeCdpCommand(「Page.setDownloadBehavior」、パラメータ);
ドライバー.get(「https://demo.guru99.com/test/yahoo.html」);
driver.findElement(By.id(「メッセンジャーのダウンロード」))。クリック();

ダウンロードの検証は、対象ディレクトリをポーリングして期待されるファイル名を探し、そのサイズを確認することで行えます。これにより、外部スクリプトを使用せずにテストを確定的に実行できます。

よくあるご質問

Selenium sendKeys() を呼び出す絶対ファイルパスを持つ要素。ブラウザがフィールドに直接入力するため、OSのファイル選択画面が開いたり、「参照」をクリックしたりする必要はありません。

ページがファイル入力を公開しない場合は、AutoIt を使用します。 Windows またはjava.awt.Robotクラスを使用します。これらのツールは、アクティブなOSダイアログにパスを入力し、[参照]ボタンをクリックしたらEnterキーを押します。

動作を「許可」に設定し、downloadPath をフォルダに設定して、executeCdpCommand(“Page.setDownloadBehavior”, params) を呼び出します。 Selenium 4 はコマンドを Chrome DevTools に転送し、「名前を付けて保存」のプロンプトをスキップします。

はい。AIアシスタントがアップロードフォームを読み取り、セレクターを提案し、空のファイル、サイズ超過のファイル、拡張子が間違っているファイルなどの境界ファイルを生成し、sendKeys()ブロックを書き込みます。これにより、セットアップ時間が短縮され、人間のテスターが見落としがちなエッジケースを検出できます。

AIツール 対象フォルダをポーリングし、ファイルサイズとチェックサムを期待値と比較し、不一致をフラグ付けします。ビジョンモデルは、PDFや画像を開いてコンテンツがリンクラベルと一致することを確認することもでき、回帰テスト実行時の手動レビューを不要にします。

Wgetはブラウザを完全にバイパスし、コマンドラインプロセスを通じてファイルを直接ディスクに保存します。レガシー環境で役立ちます。 Selenium CDPとChromeOptionsのダウンロード設定が利用できない環境が2つか3つあります。