自動テストチュートリアル

Playwright、Seleniumなどの自動テストツールを学ぼう

ファイルダウンロード(Download)

📄
sample_report.pdf
2.4 MB

PDFやCSVファイルなどをダウンロードする操作に挑戦しましょう。

利用頻度 難易度
★★★☆☆ ★★★☆☆

ファイルを自動でダウンロードする方法を学びます。

ここで一つ、非常に重要なポイントがあります。自動テストでは、ダウンロードボタンをただ click() するだけでは、ダウンロードの動作にはなりますが、ファイルそのものは保存されません。

これでは、ファイルが正しく出力されたことの確認ができないため、確実にファイルを保存するための、**「3ステップ」**が必要になります。


ダウンロードを成功させる「3ステップのおまじない」

ファイルを確実にダウンロードするためには、以下の3つのステップを順番に書くのが基本となります。

ステップ1:リンクに「ダウンロード属性」を付ける

Webサイトによっては、リンクをクリックしてもファイルがダウンロードされずにブラウザ上で開かれてしまうことがあります。これを防ぐため、evaluate というコマンドを使って、「これはダウンロード用のリンクですよ」という特別な目印を強制的に付けます。

ステップ2:リンクをクリックする

これは、これまで学んできた click() と同じです。

ステップ3:ダウンロード完了を待つ

helpers().download.waitForDownload() という、この教材で用意された便利機能を使って、ファイルのダウンロードが完了するまで待機します。


具体例

// ステップ1:ダウンロード属性を付ける
await page.getByRole('link', { name: 'Download' }).evaluate((element) => element.setAttribute("download", ""));

// ステップ2:リンクをクリックする
await page.getByRole('link', { name: 'Download' }).click();

// ステップ3:ダウンロード完了を待つ
await helpers().download.waitForDownload();

⚠️ Windows 環境は正常に動作しないことがあります。


やってみよう

以下の手順に沿って、サンプル画像をダウンロードするテストコードを完成させてください。

ℹ️ demoqaサイトではダウンロード機能にバグがあるため、Selenium - Automation Practice Form という練習サイトで演習を行ってもらいます。

演習ファイル

tests/document-2/lesson-17.spec.ts

行う操作

項目 行う操作
Downloadボタン クリックしてファイルをダウンロードする

手順動画


手順

  1. デバッグ実行: ブレークポイントで目的の画面で止める
  2. 要素の特定: Pick locator を使ってコードを取得する
  3. コードの記述: 取得したコードを元に処理を完成させる
  4. 最終確認: テストを実行し、passed を確認する

ちなみに...

ダウンロード処理は、実行する環境(自分のPCか、サーバー上か)や、ブラウザの表示・非表示(ヘッドレス/ヘッドフル)によって、挙動が変わりやすい、少しデリケートな操作です。

実際の現場で実装する際は、色々なパターンで動作確認をすることが、安定したテストへの近道です。