0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【JavaScript 2020】 CodeceptJS でファイルのダウンロード

Last updated at Posted at 2020-12-25

CodeceptJS を使ってファイルのダウンロードを試した際のメモです。
JavaScriptネタなので、後付けで JavaScript のアドベントカレンダーの 25日目に登録もしてみました。

CodeceptJS の利用

以前、自動化をあれこれ試していたときに使ったものの 1つに「CodeceptJS」がありました。

その際、Puppeteer・Playwright・WebDriver との組み合わせをそれぞれ試したりして、Puppeteer との組み合わせをメインに使っていました。
そんな中、以下の記事を見かけて、Playwright との組み合わせなどをあらためて見直してみようと思い、それを試すついでに以前は試していなかったファイルのダウンロードも試してみたりもしました。

●2020年12月現在、puppeteerとplaywright どっち選んだらいいの? - Qiita
 https://qiita.com/YusukeIwaki/items/a9dbd48b1ed4313f3815

このファイルダウンロード関連の話について、自分用のメモに残しておこうと考えて書いたのがこの記事になります。

CodeceptJS でファイルのダウンロード

codecept.conf.js への追記

以下のページの情報などを見ると、ファイルのダウンロードを行う場合は、codecept.conf.js に "FileSystem": {} という内容を記載する必要があるようです。

●"I.amInPath is not a function" on using FileSystem helper · Issue #931 · codeceptjs/CodeceptJS
 https://github.com/codeceptjs/CodeceptJS/issues/931

ダウンロードのための設定.jpg

具体的には、codecept.conf.js で以下のように追記をしました。

  helpers: {
    Playwright: {
      【(省略)】
    },
    "FileSystem": {}

プログラムの部分

ファイルのダウンロードについて、とあるファイルへのリンクがページ内にあり、それをクリックする動作でダウンロードが実行できる状況を想定しています。そのページでリンクを単純にクリックをするだけなら、以下のようになるかと思います。

  I.click('【(クリック対象となるテキスト)】');

ファイルのダウンロード関連の情報で、公式ドキュメントを見てみると、以下の部分が見つかりました。

●Playwright | CodeceptJS
 https://codecept.io/helpers/Playwright/#handledownloads

ダウンロードのためのコード.jpg

ダウンロード対象が pptx で、01.pptx というファイル名で保存する場合、例えば以下のようにすれば良いようでした。

  I.handleDownloads('files/01.pptx');
  I.click('【(クリック対象となるテキスト)】');
  I.amInPath('output');
  I.waitForFile('files/01.pptx', 5);

これにより、output フォルダのサブフォルダ「files」の中に、01.pptx が保存されるのを確認できました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?