2016-12-11 6 views
8

私はthis answerに続き、必要なものがほとんど見えます。分度器:ファイル名を知らずにファイルをダウンロードする

彼はすでにファイル名を知っていて、ファイルをダウンロードするためのe2eテストを行っているという問題がありますが、ファイル名は現在の時間(ミリ秒でも)に依存しているので、それを得ることは非常に難しいだろう)。

は、私はここに非常に単純な何かが欠けていると思うが、私は二つの方法を考えていた。(このファイルの名前を返すと同じ機能を持つ)

  1. 再作成、ファイル名の存在をチェックを開始します名前が存在しない場合はその名前のファイルを、次に右の名前が表示されるまで次のミリ秒に移動します。
  2. 「any」ファイルが存在するかどうかを確認してください。ダウンロードしたファイルが見つかった場合はダウンロードします(この場合、分度器のフォルダ全体を確認する方法はわかりません)。

あなたはこれらの選択肢を手伝ってもらえますか(私は2点目の助けを借りたいと思っています)、あるいは私にもっと良いものを与えることを望みます。おかげ

+3

:Iおそらくテストセットアップのダウンロードディレクトリをクリーンアップし、ファイル(または特定のグロブパターンにマッチしたファイル)を待つでしょう - しかし、それはやっていませんが、 'glob'パッケージを使って再帰的なものを作ることができます](http://stackoverflow.com/a/21320251/771848)) - ファイルが見つかるまで検索するか、タイムアウトが発生しました。ジャスミンでタイムアウトを制御したり、手動で測定したりすることができます。 – alecxe

+0

@alecxe私はあなたの提案に従って終わった、私はちょうど待って、 'setTimeout'または' browser.wait'のために使用するか分からなかった – eLRuLL

+0

@alecxeそれはブラウザ自体がダウンロードしているブラウザ – eLRuLL

答えて

5

は、私は、@ alecxeの提案、次のことになったとここに私の答えです:

var glob = require("glob"); 

browser.driver.wait(function() { 
    var filesArray = glob.sync(filePattern); 
    if (typeof filesArray !== 'undefined' && filesArray.length > 0) { 
     // this check is necessary because `glob.sync` can return 
     // an empty list, which will be considered as a valid output 
     // making the wait to end. 
     return filesArray; 
    } 
}, timeout).then(function (filesArray) { 
    var filename = filesArray[0]; 
    // now we have the filename and can do whatever we want 
}); 
+0

いいです、共有ありがとう! – alecxe

+0

ありがとうございました;) – eLRuLL

+0

注:私はSQAサイトにクロスレポストしました:http://sqa.stackexchange.com/a/24439/5574 – alecxe

3

だけ@ elRuLLの答えに少しより多くの背景情報を追加します。

主なアイデアは、2つのことに基づいています。

  • browser.wait()は完全に問題をフィット - それは真と評価されるか、タイムアウトがに到達するまでには連続関数を実行します。そして、タイムアウトメカニズムは既に組み込まれています。
  • glob module(最悪の場合、あなたは*.*を待つことができます - 基本的には、表示される任意のファイルを)特定のパターンにマッチするファイル名を探すための方法を提供するだけの最初の考えが私の頭に来た
関連する問題